查询以查找外键

本教程将介绍查询以查找外键的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

查询以查找外键 教程 第1张

问题描述

我有一个数据库,我需要删除一些外键,但我事先不知道外键是否仍然存在.

我找到了一些存储过程 (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 可以用于非存储过程查询....

好了关于查询以查找外键的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。