0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Primary Keyが設定されているカラムを確認したい

Posted at

Primary Keyが設定されているカラムを確認したい場合、USER_CONS_COLUMNSテーブルとUSER_CONSTRAINTSテーブルを利用します。

以下のようなテーブルT1、T2、T3があるとします。

CREATE TABLE T1 (
  COL1 INT NOT NULL PRIMARY KEY,
  COL2 INT NOT NULL,
  COL3 INT NOT NULL,
  COL4 INT NOT NULL,
  COL5 INT NOT NULL
);

CREATE TABLE T2 (
  COL1 CHAR NOT NULL,
  COL2 CHAR NOT NULL,
  COL3 CHAR NOT NULL,
  COL4 CHAR NOT NULL,
  COL5 CHAR NOT NULL,
  PRIMARY KEY (COL1, COL2)
);


CREATE TABLE T3 (
  COL1 DATE NOT NULL,
  COL2 DATE NOT NULL,
  COL3 DATE NOT NULL,
  COL4 DATE NOT NULL,
  COL5 DATE NOT NULL,
  PRIMARY KEY (COL1, COL2, COL3)
);

T1、T2、T3のPrimary Keyが設定されているカラムは以下のようなクエリで取得できます。

SELECT TABLE_NAME, COLUMN_NAME, POSITION
FROM USER_CONS_COLUMNS UCC
WHERE TABLE_NAME IN ('T1', 'T2', 'T3')
AND EXISTS (
  SELECT *
  FROM USER_CONSTRAINTS UC
  WHERE UCC.OWNER = UC.OWNER
  AND UCC.CONSTRAINT_NAME = UC.CONSTRAINT_NAME
  AND UCC.TABLE_NAME = UC.TABLE_NAME
  AND UC.CONSTRAINT_TYPE = 'P'
)
ORDER BY TABLE_NAME, POSITION

このクエリの実行結果は以下の通りになります。

TABLE_NAME COLUMN_NAME POSITION
T1 COL1 1
T2 COL1 1
T2 COL2 2
T3 COL1 1
T3 COL2 2
T3 COL3 3

環境情報

  • Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?