데이타베이스 DICTIONARY관련한 기능들을 참조하여 기능을 구현하려고 합니다.
아래 쿼리는 GLP05M이라는 테이블이 참조하고자 하는테이블(부모테이블 GLP01M)의 PRIMARY KEY 컬럼을 찾고자 하는 쿼리 이구요
SELECT FORTBL.CONSTRAINT_NAME,
IDXTBL.COLUMN_NAME,
IDXTBL.COLUMN_POSITION
FROM SYS.ALL_CONSTRAINTS FORTBL,
SYS.ALL_CONSTRAINTS REFTBL,
SYS.ALL_IND_COLUMNS IDXTBL
WHERE FORTBL.OWNER = REFTBL.OWNER
AND FORTBL.CONSTRAINT_TYPE = 'R'
AND REFTBL.CONSTRAINT_TYPE = 'P'
AND FORTBL.OWNER = 'CNSONE'
AND FORTBL.TABLE_NAME = 'GLP05M'
AND FORTBL.R_CONSTRAINT_NAME = REFTBL.CONSTRAINT_NAME
AND FORTBL.OWNER = IDXTBL.TABLE_OWNER
AND FORTBL.TABLE_NAME = IDXTBL.TABLE_NAME
ORDER BY FORTBL.CONSTRAINT_NAME, IDXTBL.COLUMN_POSITION ASC
실행시
FK_GLP05M_GLP01M_2 PART_MAT_CODE 1
FK_GLP05M_GLP01M_2 PO_NO 1 ------------------------->이 ROW와
FK_GLP05M_GLP01M_2 PO_LINE_STUS_CODE 1
FK_GLP05M_GLP01M_2 PART_NO 1
FK_GLP05M_GLP01M_2 PO_STUS_CHNG_DT 1
FK_GLP05M_GLP01M_2 PND 1
FK_GLP05M_GLP01M_2 BUYR_ID 1
FK_GLP05M_GLP01M_2 PO_LINE_STUS_CODE 2
FK_GLP05M_GLP01M_2 PO_LNNO 2 ------------------------------->이 ROW가 GLP01M 의 PRIMARY KEY 입니다.
FK_GLP05M_GLP01M_2 POR_NO 2
FK_GLP05M_GLP01M_2 PO_NO 1
FK_GLP05M_GLP01M_2 PO_LNNO 2
이렇게만 나오게 하고 싶습니다. 그런데 잘 되지 않네요!!!
아래 쿼리는 GLP05M이라는 테이블을 참조하는 테이블들의 컬럼을 가져 오는 쿼리입니다.
SELECT REF_TBL.CONSTRAINT_NAME,
IND_COL.COLUMN_NAME,
IND_COL.COLUMN_POSITION
FROM SYS.ALL_CONSTRAINTS FOR_TBL,
SYS.ALL_CONSTRAINTS REF_TBL,
SYS.ALL_IND_COLUMNS IND_COL
WHERE FOR_TBL.OWNER = 'CNSONE'
AND FOR_TBL.TABLE_NAME = 'GLP05M'
AND FOR_TBL.CONSTRAINT_TYPE = 'P'
AND FOR_TBL.OWNER = REF_TBL.R_OWNER
AND FOR_TBL.CONSTRAINT_NAME = REF_TBL.R_CONSTRAINT_NAME
AND FOR_TBL.OWNER = IND_COL.TABLE_OWNER
AND FOR_TBL.TABLE_NAME = IND_COL.TABLE_NAME
AND FOR_TBL.CONSTRAINT_NAME = IND_COL.INDEX_NAME
ORDER BY REF_TBL.CONSTRAINT_NAME ASC,
IND_COL.COLUMN_POSITION ASC
실행시
FK_GLP10M_GLP05M_1 PO_NO 1
FK_GLP10M_GLP05M_1 PO_LNNO 2
FK_GLP11C_GLP05M_1 PO_NO 1
FK_GLP11C_GLP05M_1 PO_LNNO 2
아래쿼리는 정상적으로 가져오는거 같습니다.(아래의 쿼리는 GLP10M과 ,GLP11C에서 GLP05M)을 참조한다고 설명될 수 있습니다.).
문제는 위의 쿼리에서 부모테이블의 PRIMARY 컬럼과 다른 KEY의 컬럼들도 같이
가져온다는데 문제가 있습니다.
부모테이블의 PRIMARY KEY 컬럼만 가져 올려고 할때 도움을 요청합니다.
도움 부탁 드립니다.
수고하십시오!!
|