1. ホーム
  2. sql

[解決済み] SQL Server でテーブルを参照している FOREIGN KEY 制約を調べるにはどうしたらいいですか?

2022-04-24 20:10:53

質問

テーブルを削除しようとしているのですが、次のようなメッセージが表示されます。

Msg 3726, Level 16, State 1, Line 3

オブジェクト 'dbo.UserProfile' は FOREIGN KEY 制約によって参照されているため、削除できませんでした。

Msg 2714, Level 16, State 6, Line 2

データベースに'UserProfile'という名前のオブジェクトがすでに存在します。

SQL Server Management Studioでいろいろ調べましたが、制約を見つけることができません。どうすれば外部キー制約を見つけることができますか?

解決方法を教えてください。

ここにあります。

SELECT 
   OBJECT_NAME(f.parent_object_id) TableName,
   COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName
FROM 
   sys.foreign_keys AS f
INNER JOIN 
   sys.foreign_key_columns AS fc 
      ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN 
   sys.tables t 
      ON t.OBJECT_ID = fc.referenced_object_id
WHERE 
   OBJECT_NAME (f.referenced_object_id) = 'YourTableName'

こうすることで、参照するテーブルとカラム名を取得することができます。

コメントの提案により、一般的なsys.objectsの代わりにsys.tablesを使用するように編集されました。 ありがとうございます、marc_s