T-SQLスクリプトを使ってSQL Serverのデフォルト制約を削除する方法
SQL Serverでデフォルト制約を名前なしで削除する方法
sys.default_constraints
ビューには、すべてのデフォルト制約に関する情報が含まれています。このビューを使用して、制約の名前とテーブル名を取得し、ALTER TABLE
ステートメントで削除することができます。
-- 制約の名前とテーブル名を取得する
SELECT dc.name, dc.parent_object_id
FROM sys.default_constraints dc
WHERE dc.definition IS NOT NULL;
-- デフォルト制約を削除する
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
方法 2:INFORMATION_SCHEMA ビューを使用する
-- デフォルト制約の定義を取得する
SELECT column_name, column_default
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_default IS NOT NULL;
-- デフォルト制約を削除する
ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;
方法 3:sp_helpconstraint プロシージャを使用する
EXEC sp_helpconstraint 'table_name';
-- デフォルト制約を削除する
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
注意事項
- デフォルト制約を削除すると、既存のデータに影響を与える可能性があります。削除前に、データのバックアップを取ることをお勧めします。
- 外部キー制約がデフォルト制約を参照している場合、デフォルト制約を削除する前に外部キー制約を削除する必要があります。
-- 制約の名前とテーブル名を取得する
USE AdventureWorks2019;
SELECT dc.name, dc.parent_object_id
FROM sys.default_constraints dc
WHERE dc.definition IS NOT NULL;
-- デフォルト制約を削除する
ALTER TABLE Person.Contact DROP CONSTRAINT DF_Contact_MiddleName;
-- デフォルト制約の定義を取得する
USE AdventureWorks2019;
SELECT column_name, column_default
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_default IS NOT NULL;
-- デフォルト制約を削除する
ALTER TABLE Person.Contact ALTER COLUMN MiddleName DROP DEFAULT;
USE AdventureWorks2019;
EXEC sp_helpconstraint 'Person.Contact';
-- デフォルト制約を削除する
ALTER TABLE Person.Contact DROP CONSTRAINT DF_Contact_MiddleName;
上記はあくまでもサンプルコードです。実際の環境に合わせて変更する必要があります。
SQL Server Management Studio (SSMS) を使用して、GUI でデフォルト制約を削除することができます。
- SSMS を起動し、データベースに接続します。
- オブジェクトエクスプローラーで、制約を削除するテーブルを選択します。
- テーブルのプロパティを開きます。
- [列] ページを選択します。
- デフォルト制約を削除する列を選択します。
- [デフォルト] プロパティをクリアします。
- [OK] をクリックします。
方法 5:T-SQL スクリプトを使用する
T-SQL スクリプトを使用して、デフォルト制約を削除することができます。
USE AdventureWorks2019;
ALTER TABLE Person.Contact ALTER COLUMN MiddleName DROP DEFAULT;
- 上記の方法を使用する前に、データのバックアップを取ることをお勧めします。
sql sql-server t-sql