2017-05-04 71 views
1

我需要获取有关MySQL外部约束的信息。如何获得外键的ON DELETE和ON UPDATE操作值?

我需要知道表foreign column,constraint name和ON DELETE和ON UPDATE操作。

我能够获得references表,foreign columnconstraint name但需要知道的数值为ON DELETEON UPDATE

这是我用来获取上述

SELECT 
referenced_table_name AS `references` 
,column_name AS `foreign` 
,referenced_column_name AS `on` 
FROM 
information_schema.key_column_usage AS u 
WHERE 
referenced_table_name IS NOT NULL AND table_schema = 'test' AND table_name = 'borroweds'; 
+1

检查'DELETE_RULE'和[23.19的INFORMATION_SCH'UPDATE_RULE'列EMA REFERENTIAL_CONSTRAINTS表](https://dev.mysql.com/doc/refman/5.7/en/referential-constraints-table.html)。 – wchiquito

回答

1

的信息查询试试这个查询

SELECT 
r.referenced_table_name AS `references` 
,r.CONSTRAINT_NAME AS `name` 
,r.UPDATE_RULE AS `onUpdate` 
,r.DELETE_RULE AS `onDelete` 
,u.referenced_column_name AS `on` 
,u.column_name AS `foreign` 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS r 
INNER JOIN information_schema.key_column_usage AS u ON u.CONSTRAINT_NAME = r.CONSTRAINT_NAME AND u.table_schema = r.constraint_schema AND u.table_name = r.table_name 
WHERE u.constraint_schema = 'test' AND u.table_name = 'borroweds'