Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fremdschlüssel nur löschen, wenn er existiert

Wenn Sie Fremdschlüssel löschen möchten, falls vorhanden, und keine Prozeduren verwenden möchten Sie können es so machen (für 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;

Wenn es einen Fremdschlüssel gibt, setzen wir die alter table-Anweisung in die Variable, und wenn nicht, setzen wir eine Dummy-Anweisung. Und dann führen wir es aus.