特定の名前を持つ外部キー制約があるかどうか調べる

たんに目で見て確認したいだけならば、システムストアドプロシージャの sp_fkeys を使えばいろんな情報が取れるんですが、スクリプトファイルや別のストアドからその結果を使うにはいったんテーブルに入れてからでないとダメなので(ストアドの戻り値はそのままではテーブルとして使えないため)さすがに使いにくいわけです。

で、こんなの。

	SELECT * FROM
	  INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS ref
	  INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS fk 
	  ON ref.constraint_name = fk.constraint_name

INFORMATION_SCHEMA というシステムテーブルは SQL 2003で規定されてるらしいので、汎用的な書き方になるというのがポイントですかね(別に外部キーじゃなくてもいいのですが)

でも、あるかないかを名前から調べるだけなのであれば、SQL Server なら OBJECT_ID('Hoge') が手っ取り早いってことに、後から気づきました。どのテーブルに関連してるかと、とか、そこまで調べたければ先述のクエリが良いと思いますが……。