如何在一条指令的几列上添加NOT NULL约束

时间:2015-04-18 16:01:48

标签: sql-server

我有一张没有任何限制的桌子。

我想使用单个指令将NOT NULL约束添加到此表中的四列。

我试试:

ALTER TABLE [Table]
ALTER COLUMN [Colum1] integer NOT NULL, 
             [Column2] integer NOT NULL, 
             [Column3] integer NOT NULL, 
             [Column4] integer NOT NULL;

我收到语法错误。

正确的语法是什么?

我是否必须在单独的指令中更改每一列?

2 个答案:

答案 0 :(得分:3)

我讲的太快了(编辑了我的虚假陈述)。你必须一次做一行:

ALTER TABLE [Table] ALTER COLUMN [Column1] integer NOT NULL;
ALTER TABLE [Table] ALTER COLUMN [Column2] integer NOT NULL;

您可以阅读有关ALTER TABLE over at msdn

的更多信息

答案 1 :(得分:0)

您可以逐行更改表格,也可以编写动态脚本来打印语句并执行它

CREATE TABLE EXAMPLE
([Colum1] int,
[Colum2] int,
[Colum3] int,
[Colum4] int) 

select 'ALTER TABLE ' + OBJECT_NAME(o.object_id) + 
    ' ALTER COLUMN ' + c.name + ' int ' + 
    CASE WHEN c.is_nullable = 1 THEN 'NOT NULL' ELSE 'NULL' END
from sys.objects o
inner join sys.columns c on o.object_id = c.object_id
inner join sys.types t on c.system_type_id = t.system_type_id
where o.type='U' AND O.name = 'EXAMPLE'
order by OBJECT_NAME(o.object_id)

结果集:

ALTER TABLE EXAMPLE ALTER COLUMN Colum1 int NOT NULL
ALTER TABLE EXAMPLE ALTER COLUMN Colum2 int NOT NULL
ALTER TABLE EXAMPLE ALTER COLUMN Colum3 int NOT NULL
ALTER TABLE EXAMPLE ALTER COLUMN Colum4 int NOT NULL

执行声明