DROP DEFAULT (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

從目前資料庫移除一或多個使用者自訂的預設值。

重要

下一版的 Microsoft SQL Server 將會除 DROP DEFAULT。 請勿在新的開發工作中使用 DROP DEFAULT,並規劃修改目前使用 DROP DEFAULT 的應用程式。 請改用預設定義,您可以利用 ALTER TABLECREATE TABLE 的 DEFAULT 關鍵字來建立預設定義。

Transact-SQL 語法慣例

Syntax

DROP DEFAULT [ IF EXISTS ] { [ schema_name . ] default_name } [ ,...n ] [ ; ]  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

IF EXISTS
適用於:SQL Server (SQL Server 2016 (13.x) 到最新版本)。

只有在預設值已存在時,才能有條件地將其卸除。

schema_name
這是預設值所屬的結構描述名稱。

default_name
這是現有預設值的名稱。 若要查看存在的預設清單,請執行 sp_help。 預設必須符合識別碼的規則。 您可以選擇性地指定預設結構描述名稱。

備註

在卸除預設之前,如果預設目前繫結到資料行或別名資料類型,請執行 sp_unbindefault 來解除預設的繫結。

在從允許 Null 值的資料行中卸除預設值之後,當加入資料列且未明確提供值時,會在這個位置插入 NULL。 從 NOT NULL 資料行中卸除預設值之後,當加入資料列且未明確提供值時,會傳回錯誤訊息。 稍後,會做為一般 INSERT 陳述式行為的一部份而加入這些資料列。

權限

若要執行 DROP DEFAULT,使用者至少必須有預設值所屬結構描述的 ALTER 權限。

範例

A. 卸除預設值

如果預設值尚未繫結到資料行或別名資料類型,只能利用 DROP DEFAULT 來卸除它。 下列範例會移除名稱為 datedflt 的使用者建立預設值。

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT name FROM sys.objects  
         WHERE name = 'datedflt'   
            AND type = 'D')  
   DROP DEFAULT datedflt;  
GO  

從 SQL Server 2016 (13.x) 開始,可以使用下列語法。

DROP DEFAULT IF EXISTS datedflt;  
GO  

B. 卸除已繫結到資料行的預設值

下列範例會將預設值和相關聯之 EmergencyContactPhone 資料表的 Contact 資料行解除繫結,再卸除名稱為 phonedflt 的預設值。

USE AdventureWorks2022;  
GO  
   BEGIN   
      EXEC sp_unbindefault 'Person.Contact.Phone'  
      DROP DEFAULT phonedflt  
   END;  
GO  

另請參閱

CREATE DEFAULT (Transact-SQL)
sp_helptext (Transact-SQL)
sp_help (Transact-SQL)
sp_unbindefault (Transact-SQL)