且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

仅当存在外键时才删除它

更新时间:2023-02-21 19:08:42

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

If you want to drop foreign key if it exists and do not want to use procedures you can do it this way (for 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语句放入变量中,如果没有,我们放入一个虚拟语句.然后我们执行它.

If there is foreign key we put alter table statement in variable and if there isn't we put a dummy statement. And then we execute it.