DROP DEFAULT (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

1 つまたは複数のユーザー定義の既定値を現在のデータベースから削除します。

重要

DROP DEFAULT は、次期バージョンの Microsoft SQL Server では削除されます。 新しい開発作業では、DROP DEFAULT の使用は避け、現在これらを使用しているアプリケーションは変更するようにしてください。 代わりに、ALTER TABLE または CREATE TABLE の DEFAULT キーワードを使用して作成できるデフォルト定義を使用してください。

Transact-SQL 構文表記規則

構文

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

Note

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)