仅当存在外键时才删除它

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

仅当存在外键时才删除它 教程 第1张

问题描述

我在 MySQL 数据库中.

我正在这样做,但它不起作用.

ALTER TABLE `object` DROP FOREIGN KEY IF EXISTS `object_ibfk_1`;

我试图把这个 IF EXISTS 放在任何我能做的地方.怎么在删除之前检查外键是否存在?

推荐答案

如果你想删除外键(如果存在)并且不想使用过程你可以这样做(对于 MySQL) :

set @var=if((SELECT true FROM information_schema.TABLE_CONSTRAINTS WHERE
CONSTRAINT_SCHEMA = DATABASE() AND
TABLE_NAME  = 'table_name' AND
CONSTRAINT_NAME= 'fk_name' AND
CONSTRAINT_TYPE= 'FOREIGN KEY') = true,'ALTER TABLE table_name
drop foreign key fk_name','select 1');

prepare stmt from @var;
execute stmt;
deallocate prepare stmt;

如果有外键,我们将alter table语句放入变量中,如果没有,我们放入一个虚拟语句.然后我们执行它.

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