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

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

Patricia Arquette
リリース: 2024-12-30 18:18:13
オリジナル
374 人が閲覧しました

How to Drop SQL Default Constraints Without Knowing Their Names?

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

SQL Server では、特に名前が不明な場合、デフォルト制約を識別して削除することが困難になることがあります。不明または矛盾している。これに対処するには、動的クエリ生成を使用して、デフォルトの制約を効果的に特定して削除できます。

展開された回答:

Mitch Wheat が共有したスクリプトを展開します。包括的なアプローチには、DROP CONSTRAINT コマンドを動的に生成して実行することが含まれます。仕組みは次のとおりです:

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

--print @Command

execute (@Command)
ログイン後にコピー

説明:

  • このスクリプトは、メタデータ テーブル (sys.tables、sys) をクエリすることによって、DROP CONSTRAINT コマンドを動的に構築します。 .default_constraints、およびsys.columns).
  • ターゲットのデフォルト制約を識別するためのスキーマ名、テーブル名、および列名を指定します。
  • 生成されたコマンドは動的に出力および実行されるため、ドロップすることができます。正確な制約がわからないデフォルトの制約name.

利点:

  • 「DF_SomeTable_ColName」や「DF_SmoeTable_ColName」など、一貫性のない名前の制約を処理します。
  • 動的にに基づいてデフォルトの制約を識別して削除します。指定されたテーブルと列の情報。
  • 正しいコマンドを動的に生成することで SQL エラーを回避します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート