应用默认约束时出错
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
我收到错误提示:
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