我有一個表的主鍵約束中缺少一列。我不想通過SQL Server進行編輯,而是將其放入腳本中,以將其添加爲我們更新腳本的一部分。如何使用SQL語法更改主鍵約束?
我可以用什麼語法來做到這一點?我必須刪除並重新創建關鍵約束嗎?
我有一個表的主鍵約束中缺少一列。我不想通過SQL Server進行編輯,而是將其放入腳本中,以將其添加爲我們更新腳本的一部分。如何使用SQL語法更改主鍵約束?
我可以用什麼語法來做到這一點?我必須刪除並重新創建關鍵約束嗎?
是的。唯一的方法是用Alter表刪除約束然後重新創建它。
ALTER TABLE <Table_Name>
DROP CONSTRAINT <constraint_name>
ALTER TABLE <Table_Name>
ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>)
PRIMARY KEY CONSTRAINT
不能改變,你只能刪除它並重新創建。對於大數據集,它可能會導致長時間運行,從而導致表不可用。
可以重命名約束對象使用sp_rename(如this answer描述)
例如:在此
EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint'
問題是如何更改約束,即添加一列,而不是如何重命名。 – 2015-07-02 16:09:49
性能方面沒有一點保留非聚集索引,因爲他們將得到重新在刪除和創建時進行更新。 如果它是一個大數據集,你應該考慮重新命名錶(如果可能的話,它的任何安全設置?),用正確的密鑰重新創建一個空表並遷移那裏的所有數據。 你必須確保你有足夠的空間。
AFAIK是的,你需要刪除並重新創建PK約束。我不記得任何命令添加一列到一個已經存在的PK/FK約束。 – Seramme 2012-01-06 17:12:55