1616
1717SELECT *
1818FROM (
19- SELECT PARENT .TABLE_CATALOG AS PKTABLE_CAT, PARENT .TABLE_SCHEMA AS PKTABLE_SCHEM, PARENT .TABLE_NAME AS PKTABLE_NAME,
20- PARENT .COLUMN_NAME AS PKCOLUMN_NAME, CHILD .TABLE_CATALOG AS FKTABLE_CAT, CHILD .TABLE_SCHEMA AS FKTABLE_SCHEM,
21- CHILD .TABLE_NAME AS FKTABLE_NAME, CHILD .COLUMN_NAME AS FKCOLUMN_NAME, CHILD .ORDINAL_POSITION AS KEY_SEQ, 3 AS UPDATE_RULE,
22- CASE WHEN TABLES .ON_DELETE_ACTION = ' CASCADE' THEN 0 ELSE 3 END AS DELETE_RULE, NULL AS FK_NAME, ' PRIMARY_KEY' AS PK_NAME,
19+ SELECT PARENT_TABLE .TABLE_CATALOG AS PKTABLE_CAT, PARENT_TABLE .TABLE_SCHEMA AS PKTABLE_SCHEM, PARENT_TABLE .TABLE_NAME AS PKTABLE_NAME,
20+ PARENT_INDEX_COLUMNS .COLUMN_NAME AS PKCOLUMN_NAME, CHILD_TABLE .TABLE_CATALOG AS FKTABLE_CAT, CHILD_TABLE .TABLE_SCHEMA AS FKTABLE_SCHEM,
21+ CHILD_TABLE .TABLE_NAME AS FKTABLE_NAME, PARENT_INDEX_COLUMNS .COLUMN_NAME AS FKCOLUMN_NAME, PARENT_INDEX_COLUMNS .ORDINAL_POSITION AS KEY_SEQ,
22+ 3 AS UPDATE_RULE,
23+ CASE WHEN CHILD_TABLE .ON_DELETE_ACTION = ' CASCADE' THEN 0 ELSE 3 END AS DELETE_RULE,
24+ NULL AS FK_NAME, ' PRIMARY_KEY' AS PK_NAME,
2325 7 AS DEFERRABILITY
24- FROM INFORMATION_SCHEMA .INDEX_COLUMNS PARENT
25- INNER JOIN INFORMATION_SCHEMA .INDEXES PARENT_INDEX ON PARENT .INDEX_NAME = PARENT_INDEX .INDEX_NAME AND PARENT .TABLE_NAME = PARENT_INDEX .TABLE_NAME AND PARENT .TABLE_SCHEMA = PARENT_INDEX .TABLE_SCHEMA AND PARENT .TABLE_CATALOG = PARENT_INDEX .TABLE_CATALOG AND PARENT_INDEX .INDEX_TYPE = ' PRIMARY_KEY'
26- INNER JOIN INFORMATION_SCHEMA .INDEX_COLUMNS CHILD ON NOT PARENT .TABLE_NAME = CHILD .TABLE_NAME AND PARENT .COLUMN_NAME = CHILD .COLUMN_NAME
27- INNER JOIN INFORMATION_SCHEMA .INDEXES CHILD_INDEX ON CHILD .INDEX_NAME = CHILD_INDEX .INDEX_NAME AND CHILD .TABLE_NAME = CHILD_INDEX .TABLE_NAME AND CHILD .TABLE_SCHEMA = CHILD_INDEX .TABLE_SCHEMA AND CHILD .TABLE_CATALOG = CHILD_INDEX .TABLE_CATALOG AND CHILD_INDEX .INDEX_TYPE = ' PRIMARY_KEY'
28- INNER JOIN INFORMATION_SCHEMA .TABLES ON CHILD .TABLE_CATALOG = TABLES .TABLE_CATALOG AND CHILD .TABLE_SCHEMA = TABLES .TABLE_SCHEMA AND CHILD .TABLE_NAME = TABLES .TABLE_NAME AND PARENT .TABLE_NAME = TABLES .PARENT_TABLE_NAME
29- WHERE PARENT_INDEX .INDEX_TYPE = ' PRIMARY_KEY' AND CHILD .ORDINAL_POSITION IS NOT NULL
26+ FROM INFORMATION_SCHEMA .TABLES PARENT_TABLE
27+ INNER JOIN INFORMATION_SCHEMA .INDEXES PARENT_INDEX ON
28+ PARENT_INDEX .TABLE_NAME = PARENT_TABLE .TABLE_NAME
29+ AND PARENT_INDEX .TABLE_SCHEMA = PARENT_TABLE .TABLE_SCHEMA
30+ AND PARENT_INDEX .TABLE_CATALOG = PARENT_TABLE .TABLE_CATALOG
31+ AND PARENT_INDEX .INDEX_TYPE = ' PRIMARY_KEY'
32+ INNER JOIN INFORMATION_SCHEMA .INDEX_COLUMNS PARENT_INDEX_COLUMNS ON
33+ PARENT_INDEX_COLUMNS .TABLE_NAME = PARENT_INDEX .TABLE_NAME
34+ AND PARENT_INDEX_COLUMNS .TABLE_SCHEMA = PARENT_INDEX .TABLE_SCHEMA
35+ AND PARENT_INDEX_COLUMNS .TABLE_CATALOG = PARENT_INDEX .TABLE_CATALOG
36+ AND PARENT_INDEX_COLUMNS .INDEX_NAME = PARENT_INDEX .INDEX_NAME
37+ INNER JOIN INFORMATION_SCHEMA .TABLES CHILD_TABLE ON
38+ CHILD_TABLE .PARENT_TABLE_NAME = PARENT_TABLE .TABLE_NAME
39+ AND CHILD_TABLE .TABLE_SCHEMA = PARENT_TABLE .TABLE_SCHEMA
40+ AND CHILD_TABLE .TABLE_CATALOG = PARENT_TABLE .TABLE_CATALOG
3041
3142 UNION ALL
3243
@@ -36,8 +47,15 @@ FROM (
3647 3 AS DELETE_RULE, CONSTRAINTS .CONSTRAINT_NAME AS FK_NAME, CONSTRAINTS .UNIQUE_CONSTRAINT_NAME AS PK_NAME,
3748 7 AS DEFERRABILITY
3849 FROM INFORMATION_SCHEMA .REFERENTIAL_CONSTRAINTS CONSTRAINTS
39- INNER JOIN INFORMATION_SCHEMA .KEY_COLUMN_USAGE CHILD ON CONSTRAINTS .CONSTRAINT_CATALOG = CHILD .CONSTRAINT_CATALOG AND CONSTRAINTS .CONSTRAINT_SCHEMA = CHILD .CONSTRAINT_SCHEMA AND CONSTRAINTS .CONSTRAINT_NAME = CHILD .CONSTRAINT_NAME
40- INNER JOIN INFORMATION_SCHEMA .KEY_COLUMN_USAGE PARENT ON CONSTRAINTS .UNIQUE_CONSTRAINT_CATALOG = PARENT .CONSTRAINT_CATALOG AND CONSTRAINTS .UNIQUE_CONSTRAINT_SCHEMA = PARENT .CONSTRAINT_SCHEMA AND CONSTRAINTS .UNIQUE_CONSTRAINT_NAME = PARENT .CONSTRAINT_NAME AND PARENT .ORDINAL_POSITION = CHILD .POSITION_IN_UNIQUE_CONSTRAINT
50+ INNER JOIN INFORMATION_SCHEMA .KEY_COLUMN_USAGE CHILD ON
51+ CONSTRAINTS .CONSTRAINT_CATALOG = CHILD .CONSTRAINT_CATALOG
52+ AND CONSTRAINTS .CONSTRAINT_SCHEMA = CHILD .CONSTRAINT_SCHEMA
53+ AND CONSTRAINTS .CONSTRAINT_NAME = CHILD .CONSTRAINT_NAME
54+ INNER JOIN INFORMATION_SCHEMA .KEY_COLUMN_USAGE PARENT ON
55+ CONSTRAINTS .UNIQUE_CONSTRAINT_CATALOG = PARENT .CONSTRAINT_CATALOG
56+ AND CONSTRAINTS .UNIQUE_CONSTRAINT_SCHEMA = PARENT .CONSTRAINT_SCHEMA
57+ AND CONSTRAINTS .UNIQUE_CONSTRAINT_NAME = PARENT .CONSTRAINT_NAME
58+ AND PARENT .ORDINAL_POSITION = CHILD .POSITION_IN_UNIQUE_CONSTRAINT
4159) AS CROSS_REF
4260WHERE UPPER (PKTABLE_CAT) LIKE ?
4361AND UPPER (PKTABLE_SCHEM) LIKE ?
0 commit comments