ホームページ >データベース >mysql チュートリアル >名前を知らずに SQL Server のデフォルト制約を削除するにはどうすればよいですか?

名前を知らずに SQL Server のデフォルト制約を削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-02 17:17:39424ブラウズ

How to Drop a SQL Server Default Constraint Without Knowing Its Name?

名前を知らずに SQL のデフォルト制約を削除する

SQL Server では、デフォルト制約は自動的に割り当てられる値を指定する方法です。他の値が指定されていない場合は、列に追加されます。ただし、デフォルトの制約名が不明であるか、タイプが間違っている場合があります。

課題

デフォルトの制約を削除するには、ALTER TABLE DROP CONSTRAINT 構文を使用します。制約名を指定する必要があります。残念ながら、デフォルトの制約に関する情報は、INFORMATION_SCHEMA テーブルからはすぐに入手できません。

解決策

この課題を克服する 1 つのアプローチは、動的 SQL を使用してコマンドを生成することです。スキーマ、テーブル、列の名前に基づいて制約を削除します。以下に例を示します。

declare @schema_name nvarchar(256)
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
declare @Command  nvarchar(1000)

set @schema_name = N'MySchema'
set @table_name = N'Department'
set @col_name = N'ModifiedDate'

select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name
 from sys.tables t
  join sys.default_constraints d on d.parent_object_id = t.object_id
  join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id
 where t.name = @table_name
  and t.schema_id = schema_id(@schema_name)
  and c.name = @col_name

execute (@Command)

このスクリプトは、提供された情報に基づいて必要な ALTER TABLE DROP CONSTRAINT コマンドを動的に生成し、それを実行し、正確な名前を必要とせずにデフォルトの制約を削除します。

By動的 SQL を利用するこの方法では、事前の知識や誤った制約名による潜在的なエラーを必要とせずに、デフォルトの制約を削除できます。

以上が名前を知らずに SQL Server のデフォルト制約を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。