SQL Server 2014を使用していて、User
テーブルがあります。
+----+------+-----+
| ID | Name | ... |
+----+------+-----+
| 11 | John | ... |
| 12 | Jack | ... |
| .. | .... | ... |
+----+------+-----+
そして、これを参照するmanyテーブルがあります。このテーブルを参照するすべてのテーブルのリストを取得できますか?そして、特に、このテーブルの特定の行を参照するすべてのテーブルのリストを取得できますか?
次に、User
12へのすべての参照をUser
11に更新する必要があります。
sp_help 'User'
このコマンドは、このテーブルのすべての制約と依存関係を提供します。さらに、このテーブルに依存するすべての手順も必要な場合は、お知らせください。
「このテーブルを参照するテーブルのリスト」とは、主キーを参照する外部キーを持つテーブルのリストを意味しますか?その場合、次のクエリを使用して、テーブル「User」を参照する外部キーのリストを取得できます。
SELECT name as Foreign_Key
,schema_name(schema_id) as Schema_Name
,object_name(parent_object_id) as Table_Name
FROM sys.foreign_keys
WHERE Referenced_object_id = object_id('dbo.user','U');
テーブルがdbo以外の別のスキーマに属している場合は、スキーマ名を置き換えます。
このクエリは、テーブルUserに参照されるすべての外部キーを提供します。これで、参照整合性を維持するためにupdateステートメントでどの結合を行う必要があるかがわかります。
編集:woahhhhhh私の答えをねじ込み、db2による最良の答えは彼のクエリの詳細を提供します。 特定の主キーに関連付けられた外部キーを見つける方法
特定のテーブルのORDER BY句の前に、クエリにWHERE句を追加します。
例WHERE o2.name = 'ユーザー'