我有两个问题
- 我需要找出整个数据库模式 oracle sql 中的所有代理键吗?
- 我需要找出整个数据库模式 oracle sql 中的所有主键和外键?
一些字段仅作为示例
COLUMNNAME DATATYPE NULLABLE COLUMN_ID COMMENTS
CCC_CUSTCAT_SID NUMBER(38,0) No 1 Unique SURROGATE Key
CCC_NUM_SUBCATEGORY_UID NUMBER(22,0) No 2 NATURAL key column 1, subcategory number
CCC_CATEGORY_SID NUMBER(38,0) No 3 FK: Unique SURROGATE Key of Category
CCC_MOD_CATEGORY_UID VARCHAR2(300 BYTE) No 4 NATURAL key column 2, Category UID
KCD_SUBSCR_TYPE_SID NUMBER(38,0) No 5 FK: Unique SURROGATE Key of SUBSCR type
KCD_MOD_SUBSCR_TYPE_UID VARCHAR2(300 BYTE) No 6 NATURAL KEY column 3, SUBSCR type UID
所以我有些困惑代理键与自然键与主键与外键之间的真正区别是什么?当试图通过各种帖子来理解搜索时,它有点令人困惑?
基本了解
PK - 不是唯一标识的空字段 FK - 用于引用
自然键 - ? 代理键 - ? UID - ? 西德 - ?
我找到了一些资料
有人可以解释并提供查询问题 - 1 和问题 - 2
我尝试了一些东西,但出现错误
SELECT ac.table_name,
column_name,
position,
ac.constraint_name,
DECODE (constraint_type, 'P', 'Primary Key', 'Foreign Key') key_type,
(SELECT ac2.table_name
FROM all_constraints ac2
WHERE AC2.CONSTRAINT_NAME = AC.R_CONSTRAINT_NAME)
fK_to_table
FROM all_cons_columns acc, all_constraints ac
WHERE acc.constraint_name = ac.constraint_name
AND acc.table_name = ac.table_name
AND CONSTRAINT_TYPE IN ('P', 'R')
--AND ac.table_name = 'ACCOUNT' (your table here)
ORDER BY table_name, constraint_type, position;
ORA-01427: single-row subquery returns more than one row
01427. 00000 - "single-row subquery returns more than one row"
*Cause:
*Action: