Tsql T-SQL:一次向多个现有列添加NOTNULL约束

Tsql T-SQL:一次向多个现有列添加NOTNULL约束,tsql,constraints,Tsql,Constraints,我有一张如下表: CREATE TABLE dbo.MyTable ( Text int, column2 varchar(50), column3 varchar(50) ) 现在,我想使用T-SQL将NOTNULL约束同时应用于这三列(注意,我有一个名为Text的列,它与T-SQL中的保留类型相匹配),因此我执行: ALTER TABLE dbo.MyTable ADD CONSTRAINT NOT_NULL NOT NULL (Text, column2, colu

我有一张如下表:

CREATE TABLE dbo.MyTable (
   Text int, 
   column2 varchar(50),
   column3 varchar(50)
)
现在,我想使用T-SQL将NOTNULL约束同时应用于这三列(注意,我有一个名为Text的列,它与T-SQL中的保留类型相匹配),因此我执行:

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
请注意,
notnull
并不是一个约束,而是列类型的一个特性。因此,不使用
添加约束
操作


其次,您只需要使用多个语句,每列一个。一次添加所有约束实际上没有什么好处,所以这无关紧要。

首先,您的语法是错误的

ALTER TABLE dbo.MyTable
ALTER COLUMN column2 VARCHAR(50) NOT NULL
请注意,
notnull
并不是一个约束,而是列类型的一个特性。因此,不使用
添加约束
操作


其次,您只需要使用多个语句,每列一个。一次添加所有约束实际上没有什么好处,所以这无关紧要。

首先,您的语法是错误的

ALTER TABLE dbo.MyTable
ALTER COLUMN column2 VARCHAR(50) NOT NULL
请注意,
notnull
并不是一个约束,而是列类型的一个特性。因此,不使用
添加约束
操作


其次,您只需要使用多个语句,每列一个。一次添加所有约束实际上没有什么好处,所以这无关紧要。

首先,您的语法是错误的

ALTER TABLE dbo.MyTable
ALTER COLUMN column2 VARCHAR(50) NOT NULL
请注意,
notnull
并不是一个约束,而是列类型的一个特性。因此,不使用
添加约束
操作


其次,您只需要使用多个语句,每列一个。一次添加所有约束实际上没有任何好处,因此这无关紧要。

非空的
不是约束,而是列的数据类型的一部分,因此
添加约束从一开始就不适用。正确的方法是使用
ALTER列
,因此正确的语法是

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

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

非空的
不是约束,而是列的数据类型的一部分,因此
添加约束从一开始就不适用。正确的方法是使用
ALTER列
,因此正确的语法是

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

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

非空的
不是约束,而是列的数据类型的一部分,因此
添加约束从一开始就不适用。正确的方法是使用
ALTER列
,因此正确的语法是

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

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

非空的
不是约束,而是列的数据类型的一部分,因此
添加约束从一开始就不适用。正确的方法是使用
ALTER列
,因此正确的语法是

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

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

ALTER TABLE dbo.MyTable ALTER column[Text]int not NULL;基本上,你不能同时做这三件事。必须为每个columnALTER表dbo发出命令。MyTable ALTER COLUMN[Text]int NOT NULL;基本上,你不能同时做这三件事。必须为每个columnALTER表dbo发出命令。MyTable ALTER COLUMN[Text]int NOT NULL;基本上,你不能同时做这三件事。必须为每个columnALTER表dbo发出命令。MyTable ALTER COLUMN[Text]int NOT NULL;基本上,你不能同时做这三件事。您必须为每列发出一个命令,这会导致“,”附近出现
Msg 102,级别15,状态1,第1行不正确的语法。
(在SQL Server 2012中),因为您一次不能更改多个列。您必须执行多个
ALTER TABLE…ALTER COLUMN
语句,以便一次修改一个,如接受的答案中所述。这会导致
Msg 102,级别15,状态1,第1行靠近“,”的语法不正确。
(在SQL Server 2012中),因为您不能一次修改多个列。您必须执行多个
ALTER TABLE…ALTER COLUMN
语句,以便一次修改一个,如接受的答案中所述。这会导致
Msg 102,级别15,状态1,第1行靠近“,”的语法不正确。
(在SQL Server 2012中),因为您不能一次修改多个列。您必须执行多个
ALTER TABLE…ALTER COLUMN
语句,以便一次修改一个,如接受的答案中所述。这会导致
Msg 102,级别15,状态1,第1行靠近“,”的语法不正确。
(在SQL Server 2012中),因为您不能一次修改多个列。您必须执行多个
ALTER TABLE…ALTER COLUMN
语句,以便一次修改一个,如接受答案中所述。