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