转载自:http://blog.itpub.net/28602568/viewspace-1711771/
SQL:
SELECT C.TABLE_SCHEMA 拥有者,
C.REFERENCED_TABLE_NAME 父表名称 ,
C.REFERENCED_COLUMN_NAME 父表字段 ,
C.TABLE_NAME 子表名称,
C.COLUMN_NAME 子表字段,
C.CONSTRAINT_NAME 约束名,
T.TABLE_COMMENT 表注释,
R.UPDATE_RULE 约束更新规则,
R.DELETE_RULE 约束删除规则
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE C
JOIN INFORMATION_SCHEMA. TABLES T
ON T.TABLE_NAME = C.TABLE_NAME
JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS R
ON R.TABLE_NAME = C.TABLE_NAME
AND R.CONSTRAINT_NAME = C.CONSTRAINT_NAME
AND R.REFERENCED_TABLE_NAME = C.REFERENCED_TABLE_NAME
WHERE C.REFERENCED_TABLE_NAME IS NOT NULL ;
UPDATE/DELETE_RULE 类型:
1
.
CASCADE
:
从父表中删除或更新对应的行
,
同时自动的删除或更新自表中匹配的行
。
ON
DELETE
CANSCADE和ON
UPDATE
CANSCADE都被InnoDB所支持
。
2
.
SET
NULL
:
从父表中删除或更新对应的行
,
同时将子表中的外键列设为空
。
注意
,
这些在外键列没有被设为NOT
NULL时才有效
。
ON
DELETE
SET
NULL和ON
UPDATE
SET
SET
NULL都被InnoDB所支持
。
3
.
NO
ACTION
:
InnoDB拒绝删除或者更新父表
。
4
.
RESTRICT
:
拒绝删除或者更新父表
。
指定RESTRICT
(
或者NO
ACTION
)
和忽略ON
DELETE或者ON
UPDATE选项的效果是一样的
。
5
.
SET
DEFAULT
:
InnoDB目前不支持
。
表信息参考列表:
REFERENTIAL_CONSTRAINTS表注释参考:
http://www.php100.com/manual/PostgreSQL8/infoschema-referential-constraints.html#AEN29463