我有一个数据库,需要删除一些外键,但我事先不知道外键是否仍然存在。
我发现了一些存储过程(http://forums.mysql.com/read.php?97,218825,247526)这可以解决问题,但我不想为此创建存储过程。
我尝试在存储过程中使用查询,但使用“IF EXISTS(SELECT NULL FROM 等...等...”时出现错误
我可以只使用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
我在论坛中寻找了带有简单查询的示例,但我无法理解为什么这不起作用。
注意:编辑以更正损坏的链接
需要连接到Information schema,就可以在这张表中找到主键和外键的所有信息
SELECT * FROM information_schema.TABLE_CONSTRAINTS T;
你需要成为ROOT
用户访问information_schema
.
使用这个表你可以找到表、数据库以及它是否有外键。
如果您不想使用,希望这会有所帮助IF EXIST
和存储过程。但我确信你可以使用IF EXIST
可用于非存储过程查询......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)