web-dev-qa-db-ja.com

参照テーブルを見つける方法は?

SQL Server 2014を使用していて、Userテーブルがあります。

+----+------+-----+
| ID | Name | ... |
+----+------+-----+
| 11 | John | ... |
| 12 | Jack | ... |
| .. | .... | ... |
+----+------+-----+

そして、これを参照するmanyテーブルがあります。このテーブルを参照するすべてのテーブルのリストを取得できますか?そして、特に、このテーブルの特定の行を参照するすべてのテーブルのリストを取得できますか?

次に、User 12へのすべての参照をUser 11に更新する必要があります。

4
Giovanni Lovato
sp_help 'User'

このコマンドは、このテーブルのすべての制約と依存関係を提供します。さらに、このテーブルに依存するすべての手順も必要な場合は、お知らせください。

4
Chaos Legion

「このテーブルを参照するテーブルのリスト」とは、主キーを参照する外部キーを持つテーブルのリストを意味しますか?その場合、次のクエリを使用して、テーブル「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 = 'ユーザー'

3
Luke Pafford