DROP DEFAULT (Transact-SQL)

1 つ以上のユーザー定義のデフォルトを現在のデータベースから削除します。

重要な注意事項重要

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • schema_name
    デフォルトが所属するスキーマの名前を指定します。

  • default_name
    既存のデフォルトの名前です。既存のデフォルトの一覧を表示するには、sp_help を実行します。デフォルトは、識別子の規則に従っている必要があります。デフォルトのスキーマ名の指定は省略可能です。

説明

デフォルトが列または別名データ型にバインドされている場合は、デフォルトを削除する前に、sp_unbindefault を実行してデフォルトをアンバインドしてください。

NULL 値が許容される列からデフォルトを削除した後、行を追加しその値を明示的に指定しなかった場合、その位置には NULL が挿入されます。NOT NULL 列からデフォルトを削除した後、行を追加しその値を明示的に指定しなかった場合は、エラー メッセージが返されます。これらの行は、通常の INSERT ステートメントの動作の一部として後で追加されます。

権限

DROP DEFAULT を実行するには、少なくとも、デフォルトが属するスキーマに対する ALTER 権限が必要です。

A. デフォルトを削除する

デフォルトが列または別名データ型にバインドされていない場合は、DROP DEFAULT を使うだけで削除できます。次の例では、ユーザーが作成したデフォルト datedflt を削除します。

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

B. 列にバインドされたデフォルトを削除する

次の例では、Employee テーブルの EmergencyContactPhone 列に関連付けられているデフォルトをアンバインドし、デフォルト phonedflt を削除します。

USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT name FROM sys.objects
         WHERE name = 'phonedflt' 
            AND type = 'D')
   BEGIN 
      EXEC sp_unbindefault 'Person.PersonPhone'
      DROP DEFAULT phonedflt
   END
GO