DROP DEFAULT (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

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

重要

DROP DEFAULT次世代のMicrosoft SQL Serverで削除されます。 新しい開発作業では DROP DEFAULT を使わず、現在それらを使用しているアプリケーションを修正する計画を立ててください。 代わりに、ALTER TABLECREATE TABLEのDEFAULTキーワードを使って作成できるデフォルトの定義を使いましょう。

Transact-SQL 構文表記規則

構文

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

引数

存在する場合
適用対象: 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)