T-SQL: 一次性给多个已有列添加NOT NULL约束

T-SQL: Add NOT NULL constraint to multiple existing columns at once

我有一个 table 如下所示:

CREATE TABLE dbo.MyTable (
   Text int, 
   column2 varchar(50),
   column3 varchar(50)
)

现在我想使用 T-SQL 一次对三列应用 NOT NULL 约束(请注意,我有一个名为 Text 的列与 T-[= 中的保留类型相匹配22=]), 所以我执行:

ALTER TABLE dbo.MyTable 
ADD CONSTRAINT NOT_NULL NOT NULL (Text, column2, column3)

但它不起作用:

保留字附近的语法不正确 'not'。

一方面,您的语法错误。

ALTER TABLE dbo.MyTable
ALTER COLUMN column2 VARCHAR(50) NOT NULL

请注意,NOT NULL 并不完全表现为约束,而是列类型的一个特征。因此,您不使用 ADD CONSTRAINT 操作。

其次,您只需使用多个语句,每列一个。一次添加所有约束确实没有任何好处,所以没关系。

NOT NULL 不是约束,而是列数据类型的一部分,因此 ADD CONSTRAINT 一开始根本不适用。正确的做法是使用 ALTER COLUMN,因此正确的语法是

ALTER TABLE dbo.MyTable ALTER COLUMN [Text] INT NOT NULL,
                                     [column2] VARCHAR(50) NOT NULL,
                                     [column3] VARCHAR(50) NOT NULL ;

列名与保留关键字冲突的问题是通过将名称括在[]中来处理的,但这不是您示例中的原始问题。