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
语句,以便一次修改一个,如接受答案中所述。