如何在MySql中查看与表相关的外键?
背景:我想在MySql中删除一个具有外键约束的表。当我这么做的时候,我得到了这个:
Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails
如何删除与表相关的外键,留下其他的。
发布于 2015-05-24 16:52:46
首先,以这种方式找到您的FOREIGN KEY约束名称:
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME, -- <<-- the one you want!
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'My_Table';如果在不同模式中有多个名为WHERE的表,也可以添加(到My_Table子句)。
AND TABLE_SCHEMA = 'My_Database';然后,可以通过以下方式删除命名约束:
ALTER TABLE My_Table DROP FOREIGN KEY FK_constraint_name; FK_constraint_name是从上面的查询中突出显示的CONSTRAINT_NAME字段获得的。
发布于 2020-03-02 08:36:14
SELECT
DISTINCT a.TABLE_NAME,
a.CONSTRAINT_NAME,
b.DELETE_RULE,
b.UPDATE_RULE,
a.REFERENCED_TABLE_NAME,
a.COLUMN_NAME,
a.REFERENCED_COLUMN_NAME,
a.TABLE_SCHEMA
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE a
JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS b USING (CONSTRAINT_NAME)
WHERE
a.TABLE_SCHEMA = "DATABASE_NAME" AND
a.REFERENCED_TABLE_NAME = 'TABLE_NAME'
ORDER BY a.TABLE_NAME ASC;发布于 2018-12-17 14:24:14
启发了上面的查询。将引用的表名更改为表名作为引用的表名,因此原始查询的结果不会显示表上的外键。
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME, -- <<-- the one you want!
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
Table_name = 'case_qualitycontrolcase' and constraint_name = fhttps://dba.stackexchange.com/questions/102371
复制相似问题