方案:
我将2个表名(例如员工和部门)传递给pl / sql程序。
我希望这个过程生成像displayNextImage()
这样的WHERE子句,所以基本上这个过程必须找到关键关系。
我尝试使用all_constraints表来查找constraint_type =' P'或者' F'然后找到关联列,但在此表中没有关于约束中使用哪个列的信息。 有没有人知道我怎么能这样做(mayby以不同的方式)?
答案 0 :(得分:1)
试试这段代码:
SELECT UC.OWNER
, UC.CONSTRAINT_NAME
, UCC1.TABLE_NAME||'.'||UCC1.COLUMN_NAME "CONSTRAINT_SOURCE"
, 'REFERENCES'
, UCC2.TABLE_NAME||'.'||UCC2.COLUMN_NAME "REFERENCES_COLUMN"
FROM USER_CONSTRAINTS uc
, USER_CONS_COLUMNS ucc1
, USER_CONS_COLUMNS ucc2
WHERE UC.CONSTRAINT_NAME = UCC1.CONSTRAINT_NAME
AND UC.R_CONSTRAINT_NAME = UCC2.CONSTRAINT_NAME
AND UCC1.POSITION = UCC2.POSITION -- Correction for multiple column primary keys.
AND UC.CONSTRAINT_TYPE = 'R'
ORDER BY UCC1.TABLE_NAME
, UC.CONSTRAINT_NAME;
答案 1 :(得分:0)
使用自然加入怎么样?
如果两个表的列名一致,则Natural Join子句将连接每个公共列名称上的表。
例如,来自文档:
https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljnaturaljoin.html
如果表COUNTRIES和CITIES有两个名为
的公共列 COUNTRY和COUNTRY_ISO_CODE,以下两个SELECT语句 当量:
SELECT * FROM COUNTRIES NATURAL JOIN CITIES
SELECT * FROM COUNTRIES JOIN CITIES
USING (COUNTRY, COUNTRY_ISO_CODE)