DROP DEFAULT (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
1 つまたは複数のユーザー定義の既定値を現在のデータベースから削除します。
重要
DROP DEFAULT は、次期バージョンの Microsoft SQL Server では削除されます。 新しい開発作業では、DROP DEFAULT の使用は避け、現在これらを使用しているアプリケーションは変更するようにしてください。 代わりに、ALTER TABLE または CREATE TABLE の DEFAULT キーワードを使用して作成できるデフォルト定義を使用してください。
構文
DROP DEFAULT [ IF EXISTS ] { [ schema_name . ] default_name } [ ,...n ] [ ; ]
引数
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)