我想將非空約束添加到表中的現有列中。在完成一些合併數據的操作之後。我想修改表格來添加不爲null的約束。但是,我確實需要首先驗證是否存在NotNULL約束,否則在運行腳本的後續操作上。該文件會拋出錯誤。那麼應該怎麼樣。更改sqlserver表列以添加'Not NULL'約束
我想嘗試類似:
IF NOT EXISTs (Select.. )
BEGIN
ALTER table ....
END
我想將非空約束添加到表中的現有列中。在完成一些合併數據的操作之後。我想修改表格來添加不爲null的約束。但是,我確實需要首先驗證是否存在NotNULL約束,否則在運行腳本的後續操作上。該文件會拋出錯誤。那麼應該怎麼樣。更改sqlserver表列以添加'Not NULL'約束
我想嘗試類似:
IF NOT EXISTs (Select.. )
BEGIN
ALTER table ....
END
也許我沒有正確地理解這一點,但沒有必要檢查所有腦幹。如果你喜歡,你可以反覆修改一個表的列到NOT NULL
。
試試這個:
CREATE TABLE Test(ID INT,SomeValue VARCHAR(100));
INSERT INTO Test VALUES(1,NULL),(2,'Value 2'),(NULL,'Value NULL');
--Ups,ID不應該是NULL,但這將引發一個錯誤
--ALTER TABLE Test ALTER COLUMN ID INT NOT NULL;
- 第一個已糾正缺失值
UPDATE Test SET ID=3 WHERE SomeValue='Value NULL';
- 現在這個作品
ALTER TABLE Test ALTER COLUMN ID INT NOT NULL;
- 再次聲明此語句沒有問題。無需檢查所有腦幹...
ALTER TABLE Test ALTER COLUMN ID INT NOT NULL;
--clean-最多
GO
DROP TABLE Test;
可以使用視圖中sys
命名空間用於此目的。像這樣的東西。
select c.name,t.name,c.is_nullable
from sys.all_columns c
inner join sys.tables t on c.object_id=t.object_id
where t.name = 'MyTable' and c.name = 'myCol';
然後alter table ... alter column...
http://stackoverflow.com/questions/2499332/how-to-check-if-a-constraint-exists-in-sql-server –
這個問題是不是解決了嗎?你需要進一步的幫助嗎?請允許我提示一個提示:如果這個問題已經解決,那麼在(最佳)答案的投票櫃檯下面勾選驗收檢查將會非常友善。這將1)標記這個問題已解決2)使追隨者更容易找到最佳的解決方案3)支付點給回答者和4)支付點給你。既然你已經跨越了15分的邊界,你還需要額外的投票。這是SO的方式來說聲謝謝。快樂編碼! – Shnugo