• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sqlservrのシステムテーブルから主キー判定)

sqlservrのシステムテーブルから主キー判定

このQ&Aのポイント
  • sqlservrのシステムテーブルを結合して主キーの判定を行いたいです。
  • sysobjectsとsyscolumnsを結合してテーブル名と項目名を取得し、主キーの項目には○をつけたいです。
  • sysindexkeysやsysindexesを利用しても解決できずに困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

SQL Server 2000なんですか?2005以降ならば新しいシステムビューを見た方がいいですよ。 select o.name, c.name, type_name(c.xusertype), case when ik.colid is not null then 'PK' end from sysobjects o inner join syscolumns c on c.id=o.id left outer join sysobjects pk on pk.parent_obj=o.id and pk.xtype='PK' left outer join sysindexes ix on ix.name=pk.name left outer join sysindexkeys ik on ik.id=o.id and ik.indid=ix.indid and ik.colid=c.colid where o.type='U' 一応新しい方でも書いておきます。 select o.name, c.name, type_name(c.user_type_id), case when ic.column_id is not null then 'PK' end from sys.objects o inner join sys.columns c on c.object_id=o.object_id left outer join sys.indexes ix on ix.object_id=o.object_id and ix.is_primary_key=1 left outer join sys.index_columns ic on ic.object_id=o.object_id and ic.index_id=ix.index_id and ic.column_id=c.column_id where o.type='U'

dellxp2009
質問者

お礼

>SQL Server 2000なんですか? はい、残念な事に2000です。 なるほど、見ればわかりましたが、ハマってしまっってる人間には果てしなく遠い答えでした。 ありがとうございます。助かりました。

関連するQ&A