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

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

Barbara Streisand
リリース: 2024-12-30 03:58:09
オリジナル
809 人が閲覧しました

How to Drop SQL Server Default Constraints Without Knowing Their Names?

名前を知らない SQL デフォルト制約の削除

背景

SQL Server では列にデフォルト制約を作成できます。ただし、初期のバージョンでは、タイプミスにより、「DF_SomeTable_ColName」や「DF_SmoeTable_ColName」などの矛盾した制約名が発生することがよくありました。これは、正確な名前を知らずにデフォルトの制約を削除しようとする場合に問題を引き起こします。

解決策

名前を知らずにデフォルトの制約を効果的に削除するには、次のアプローチを使用します。使用可能:

  1. ドロップ コマンドを動的に生成: を使用sys.tables、sys.default_constraints、および sys.columns テーブルを組み合わせて、制約を削除する SQL コマンドを表す動的文字列を構築できます。この文字列は、削除するテーブル、列、および特定のデフォルト制約を識別します。
  2. 動的コマンドの実行: ドロップ コマンド文字列が生成されると、execute (@) を使用して動的に実行できます。指示)。このステップでは、コマンドを実行し、デフォルトの制約を削除します。

サンプル コード

次のコード サンプルは、説明されているアプローチの実装を提供します。

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)
ログイン後にコピー

この手法を利用すると、タイプミスによる名前の不一致に関係なく、デフォルトの制約を動的に削除できます。このアプローチにより、不明な制約名によるエラーが発生することなく、制約が正常に削除されます。

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

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