查询以查找外键
本教程将介绍查询以查找外键的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我有一个数据库,我需要删除一些外键,但我事先不知道外键是否仍然存在.
我找到了一些存储过程 (http://forums.mysql.com/read.php?97,218825,247526) 可以解决问题,但我不想为此创建存储过程.
我尝试在存储过程中使用查询,但使用IF EXISTS (SELECT NULL FROM etc.. etc...
我只能在存储过程中使用 IF EXISTS
吗?
现在,我唯一能跑的就是
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';
我也试过了
IF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF;
但我得到一个 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的IF"附近使用正确的语法
我在论坛中查找了带有简单查询的示例,但我无法理解为什么这不起作用.
注意:编辑以更正断开的链接
推荐答案
需要连接Information scheme,可以在这个表中找到所有主键和外键的信息
SELECT * FROM information_schema.TABLE_CONSTRAINTS T;
您需要成为 ROOT
用户才能访问 information_schema
.
使用这个表可以查到表、db以及是否有外键.
如果您不想使用 IF EXIST
和存储过程,希望这会有所帮助.但我确信你可以使用 IF EXIST
可以用于非存储过程查询....
好了关于查询以查找外键的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。