從當前數(shù)據(jù)庫中刪除一個或多個用戶定義的默認值。
DROP DEFAULT 語句不適用于 DEFAULT 約束。有關(guān)除去 DEFAULT 約束(通過使用 CREATE TABLE 或 ALTER TABLE 語句的 DEFAULT 選項所創(chuàng)建)的更多信息,請參見本卷中的"ALTER TABLE"。
DROP DEFAULT { default } [ ,...n ]
default
是現(xiàn)有默認值的名稱。若要查看現(xiàn)有默認值的列表,請執(zhí)行 sp_help。默認值必須符合標識符規(guī)則。有關(guān)更多信息,請參見使用標識符??梢赃x擇是否指定默認值所有者名稱。
n
是表示可以指定多個默認值的占位符。
除去默認之前,通過執(zhí)行 sp_unbindefault 解除綁定默認值(如果默認值當前綁定到列或用戶定義的數(shù)據(jù)類型)。
從允許空值的列中除去默認值后,當添加行且沒有顯式提供值時,將在那個位置插入 NULL。從 NOT NULL 列中除去默認值后,當添加行且沒有顯式提供值時,將返回錯誤信息。這些行以后作為標準 INSERT 語句行為的一部分添加。
默認情況下,將 DROP DEFAULT 權(quán)限授予默認值所有者,該權(quán)限不可轉(zhuǎn)讓。然而,db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色成員以及 sysadmin 固定服務(wù)器角色成員可以通過在 DROP DEFAULT 中指定所有者除去任何默認對象。
如果默認值沒有綁定到列或用戶定義的數(shù)據(jù)類型,可以很容易地使用 DROP DEFAULT 將其除去。下例刪除用戶創(chuàng)建的名為 datedflt 的默認值。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'datedflt'
AND type = 'D')
DROP DEFAULT datedflt
GO
下例解除綁定與 authors 表的 phone 列關(guān)聯(lián)的默認值,然后除去名為 phonedflt 的默認值。
USE pubs相關(guān)文章
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'phonedflt'
AND type = 'D')
BEGIN
EXEC sp_unbindefault 'authors.phone'
DROP DEFAULT phonedflt
END
GO