我正在尝试使用两个数据字典表输出我的约束。我希望输出包含 CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME COLUMN_NAME POSITION LAST_CHANGE,但我不确定如何处理它,因为 Position 和 Column_name 位于不同的数据字典表中。我在 SqlPlus 上做这个
您需要执行加入。
首先,设置列的宽度,以便很好地适合屏幕
SQL> col constraint_name format a15
SQL> col constraint_type format a15
SQL> col table_name format a10
SQL> col column_name format a11
SQL> col last_changed format a15
稍微拉长线宽:
SQL> set linesize 100
设置日期格式:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
最后:
SQL> SELECT c.constraint_name,
2 c.constraint_type,
3 c.table_name,
4 t.column_name,
5 t.position,
6 c.last_change
7 FROM user_constraints c JOIN user_cons_columns t ON t.table_name = c.table_name
8 WHERE ROWNUM <= 3;
CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME COLUMN_NAME POSITION LAST_CHANGE
--------------- --------------- ---------- ----------- ---------- -------------------
PK_DEPT P DEPT LOC 1 15.07.2024 07:07:33
FK_DEP_LOC R DEPT LOC 1 15.07.2024 07:09:43
FK_EMP_DEPT R EMP DEPTNO 1 15.07.2024 07:07:34
SQL>
如果您要使用
all_constraints
或 dba_constraints
(和 _cons_columns
),您还必须加入 owner
列。