中野です。
SQL文でテーブルのPrimary Keyを取得する方法です。
?SQLServerの場合
SELECT COL.name AS COL_NAME
FROM sysindexkeys IK, sysobjects O, syscolumns COL,
(SELECT I.id, I.indid, I.status FROM sysindexes I WHERE (I.status & 2048)<>0) V_PR
WHERE IK.id = O.id
AND IK.id = COL.id
AND IK.colid = COL.colid
AND IK.id = V_PR.id
AND IK.indid = V_PR.indid
AND O.name = 'テーブル名'
ORDER BY IK.id, IK.indid, IK.keyno
?Oracleの場合
SELECT B.COLUMN_NAME AS COL_NAME
FROM USER_CONSTRAINTS A, USER_CONS_COLUMNS B
WHERE B.TABLE_NAME = A.TABLE_NAME(+)
AND B.CONSTRAINT_NAME = A.CONSTRAINT_NAME(+)
AND B.TABLE_NAME = 'テーブル名'
AND A.CONSTRAINT_TYPE = 'P'
これで"COL_NAME"にフィールド名が入ってきます。
SQL文でテーブルのPrimary Keyを取得する方法です。
?SQLServerの場合
SELECT COL.name AS COL_NAME
FROM sysindexkeys IK, sysobjects O, syscolumns COL,
(SELECT I.id, I.indid, I.status FROM sysindexes I WHERE (I.status & 2048)<>0) V_PR
WHERE IK.id = O.id
AND IK.id = COL.id
AND IK.colid = COL.colid
AND IK.id = V_PR.id
AND IK.indid = V_PR.indid
AND O.name = 'テーブル名'
ORDER BY IK.id, IK.indid, IK.keyno
?Oracleの場合
SELECT B.COLUMN_NAME AS COL_NAME
FROM USER_CONSTRAINTS A, USER_CONS_COLUMNS B
WHERE B.TABLE_NAME = A.TABLE_NAME(+)
AND B.CONSTRAINT_NAME = A.CONSTRAINT_NAME(+)
AND B.TABLE_NAME = 'テーブル名'
AND A.CONSTRAINT_TYPE = 'P'
これで"COL_NAME"にフィールド名が入ってきます。


