プライマリキーの設定されたカラム一覧を取得(Oracle)

SQL のSELECT文的にはおかしくないはずなのに、変な結果が帰ってきて、テーブルスキーマを確認してみたら、プライマリーキーが設定されておらず、同じキーで異なるデータが登録されていてビックリ、みたいな。

SELECT c.table_name, cc.column_name
  FROM user_constraints c, user_cons_columns cc
 WHERE c.table_name      = cc.table_name
   AND c.constraint_name = cc.constraint_name
   AND c.constraint_type = 'P' -- この情報がほしいから User_constraints テーブルと結合
 ORDER BY cc.table_name, cc.column_name;

user_constraints.constraint_type(制約タイプ) は次のようになっている。

P : 主キー
U : 一意キー
R : 外部キー
C : CHECK、NOT NULL

参考 「Oracle Database アプリケーション開発者ガイド-基礎編:6 アプリケーション開発におけるデータ整合性のメンテナンス」

Advertisements
Tagged with: , ,
Posted in database

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: