我正在运行的一段遗留代码,它会破坏一个名为REF_REQUEST的约束。
我通过以下方式查找此约束:
select * from all_constraints where constraint_name='REF_REQUEST'
这告诉我constraint_type是'R',它给我表名为CORRESPONDENCE。
但是,我仍然不知道......我在CORRESPONDENCE中缺少什么价值,或者我试图插入的是导致问题的地方,以及每个列的相关内容。如何通过查询dB来了解此信息?
答案 0 :(得分:3)
或者,您知道它是基于您从all_constraints(constraint_type = R)中选择的参照完整性约束,因此您只需查询all_cons_columns即可获得答案:
SELECT table_name, column_name
FROM all_cons_columns
WHERE constraint_name = 'REF_REQUEST'
ORDER by position;
答案 1 :(得分:2)
使用get_ddl
包中的dbms_metadata
方法获取有关约束的更多详细信息
SELECT CAST(DBMS_METADATA.GET_DDL('CONSTRAINT','REF_REQUEST','CERTIFICATION') AS VARCHAR2(4000))
FROM DUAL
那应该告诉你约束对哪些列起作用
其中一个重载方法接受模式名称,因此您可以将其作为参数传递。
DBMS_METADATA.GET_DDL (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;
进一步阅读: