2015-04-18 75 views
2

我有一個沒有任何約束的表。如何在一條指令的幾列上添加NOT NULL約束條件

我想使用單個指令將NOT NULL約束添加到此表中的四列。

我嘗試:

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

我收到一個語法錯誤。

什麼是正確的語法?

我必須在單獨的指令中更改每列嗎?

+0

[請求此連接項](https://connect.microsoft.com/SQLServer/feedback/details/351514/multiple-alter-column-clauses-in-an-alter-table) –

回答

3

我說得太快(編輯出我的虛假陳述)。你必須做一個線在同一時間:

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

你可以閱讀更多關於ALTER TABLE over at msdn

+0

非常感謝爲你的答案:) – Kate

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 

執行聲明