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