mysql - 确定表是否在 CASCADE 上有 DELETE

标签 mysql database cascading-deletes

我能否知道数据库是否有 DELETE ON CASCADE 和查询?

最佳答案

是的。只需查询 INFORMATION_SCHEMA

SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS

或者更具体的

-- This query will list all constraints, their delete rule, 
-- the constraint table/column list, and the referenced table
SELECT 
  r.CONSTRAINT_NAME,
  r.DELETE_RULE, 
  r.TABLE_NAME,
  GROUP_CONCAT(k.COLUMN_NAME SEPARATOR ', ') AS `constraint columns`,
  r.REFERENCED_TABLE_NAME
FROM information_schema.REFERENTIAL_CONSTRAINTS r
  JOIN information_schema.KEY_COLUMN_USAGE k
  USING (CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, CONSTRAINT_NAME)
-- using MySQL's GROUP BY clause. In other DB's more columns would need to be
-- specified!
GROUP BY r.CONSTRAINT_CATALOG,
         r.CONSTRAINT_SCHEMA,
         r.CONSTRAINT_NAME

阅读有关 REFERENTIAL_CONSTRAINTS table in the manual 的更多信息

关于mysql - 确定表是否在 CASCADE 上有 DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134913/

相关文章:

php - 加快慢3表MYSQL查询速度

database - QT中清空sqlite数据库

java - JPA @OneToMany 中的级联删除与数据库级联外键删除

Mysql 'Cascade On Delete' 删除父项时外键行不删除

mysql - 如何在 MySQL 中使用 AdWhirl

mysql - 使用 gem 'dbi' 与 ruby​​ 的 Mysql DB 连接问题

MySQL 连接字符串拒绝连接

java - 当存在ManyToOne关系时如何删除子记录?

mysql - 通过 MySQL 存储过程将记录添加到 WooCommerce 表

php - 我尝试使用 session 数据调用数组上的成员函数 save()