【发布时间】:2011-12-07 15:01:30
【问题描述】:
我有一个数据库,我需要删除一些外键,但我事先不知道外键是否仍然存在。
我找到了一些可以解决问题的存储过程 (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;
但我得到了You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF' at line 1
我在论坛中查找了带有简单查询的示例,但我无法理解为什么这不起作用。
注意:编辑以更正断开的链接
【问题讨论】:
-
那么您的查询是什么样的?
-
“删除外键”具体是什么意思?
-
@gview 类似于 ALTER TABLE
tableDROP FOREIGN KEYfk;
标签: mysql foreign-keys