2016-12-31 110 views
1

我需要改變我的表「MyTable的」的「ID」欄,以移除約束,但也添加一個默認值,所以我做的:SQL服務器 - 刪除約束,並添加默認值一次

要降約束我做的:

ALTER TABLE MyTable DROP CONSTRAINT [ID] 

爲默認值添加到列:

ALTER TABLE MyTable ADD DEFAULT 0 FOR ID 

是否有可能在一個SQL語句做一次?

+1

它似乎並不如此。你可能會放棄2個約束,或者添加2個約束,但似乎不可能放棄1並添加1(就我的知識和測試而言)。如果你瞭解如何,發佈到下面的答案。 – DVT

+3

ADD和DROP是[語法](https://msdn.microsoft.com/en-gb/library/ms190273.aspx)中的互斥選項。您不能同時執行這兩個操作。 –

+1

它們需要對錶進行獨佔鎖定,並且由於它們是單獨的事務語句,因此SQL Server無法一起執行它們。畢竟,你如何在已經存在的地方插入一個約束?因此,必須在上一個命令完成後才能進行聯合。 –

回答

2

您可以參考the grammar in books online來回答這個問題。 ()表示替代方案。您可以選擇ADDDROP。你不能在一個ALTER TABLE調用中執行這兩個操作。