应用默认约束时出错

Error while applying a default constraint

我收到错误提示:

incorrect syntax near for.

CREATE TABLE Test       (ID       INT          not null IDENTITY Primary key,
                         CreatedBy      VARCHAR(20)  not null,
                         CreatedDate    DATETIME     not null,
                         UpdatedBy      VARCHAR(20)  not null,
                         LastUpdated    DATETIME     not null,

CONSTRAINT Test_CreatedBy   DEFAULT USER_NAME() FOR CreatedBy,
CONSTRAINT Test_CreatedDate DEFAULT GETDATE()   FOR CreatedDate,
CONSTRAINT Test_UpdatedBy   DEFAULT USER_NAME() FOR UpdatedBy,
CONSTRAINT Test_LastUpdated DEFAULT GETDATE()   FOR LastUpdated)
go

您可以将约束定义为列级别,如下所示

CREATE TABLE Test (
ID INT NOT NULL IDENTITY(1,1) Primary key,
CreatedBy  VARCHAR(20) NOT NULL DEFAULT USER_NAME(),
CreatedDate  DATETIME NOT NULL DEFAULT GETDATE(),
UpdatedBy VARCHAR(20) NOT NULL DEFAULT USER_NAME(),
LastUpdated DATETIME NOT NULL DEFAULT GETDATE());
GO

试试这个语法:

CREATE TABLE Test       
(
ID             INT          not null IDENTITY Primary key,
CreatedBy      VARCHAR(20)  not null
    CONSTRAINT Test_CreatedBy   DEFAULT USER_NAME(),
CreatedDate    DATETIME     not null
    CONSTRAINT Test_CreatedDate DEFAULT GETDATE(),
UpdatedBy      VARCHAR(20)  not null
    CONSTRAINT Test_UpdatedBy   DEFAULT USER_NAME(),
LastUpdated    DATETIME     not null
    CONSTRAINT Test_LastUpdated DEFAULT GETDATE()
);
GO

dbfiddle here

或者如果您更喜欢使用 ALTER TABLE:

CREATE TABLE Test       
(
ID             INT          not null IDENTITY Primary key,
CreatedBy      VARCHAR(20)  not null,
CreatedDate    DATETIME     not null,
UpdatedBy      VARCHAR(20)  not null,
LastUpdated    DATETIME     not null
);
GO

ALTER TABLE Test
    ADD CONSTRAINT Test_CreatedBy   DEFAULT USER_NAME() FOR CreatedBy;
GO

ALTER TABLE Test
    ADD CONSTRAINT Test_CreatedDate DEFAULT GETDATE() FOR CreatedDate;
GO

ALTER TABLE Test
    ADD CONSTRAINT Test_UpdatedBy   DEFAULT USER_NAME() FOR UpdatedBy;
GO

ALTER TABLE Test
    ADD CONSTRAINT Test_LastUpdated DEFAULT GETDATE() FOR LastUpdated;
GO

dbfiddle here