DROP DEFAULT (Transact-SQL)
1 つ以上のユーザー定義のデフォルトを現在のデータベースから削除します。
重要
DROP DEFAULT は、次期バージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、DROP DEFAULT の使用は避け、現在このオプションを使用しているアプリケーションは修正するようにしてください。代わりに、ALTER TABLE または CREATE TABLE の DEFAULT キーワードを使用して作成できるデフォルト定義を使用してください。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで) |
構文
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 AdventureWorks2012;
GO
IF EXISTS (SELECT name FROM sys.objects
WHERE name = 'datedflt'
AND type = 'D')
DROP DEFAULT datedflt;
GO
B. 列にバインドされたデフォルトを削除する
次の例では、Contact テーブルの EmergencyContactPhone 列に関連付けられているデフォルトをアンバインドし、デフォルト phonedflt を削除します。
USE AdventureWorks2012;
GO
IF EXISTS (SELECT name FROM sys.objects
WHERE name = 'phonedflt'
AND type = 'D')
BEGIN
EXEC sp_unbindefault 'Person.Contact.Phone'
DROP DEFAULT phonedflt
END;
GO