Nếu bạn muốn bỏ khóa ngoại nếu nó tồn tại và không muốn sử dụng các thủ tục bạn có thể làm theo cách này (đối với 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;
Nếu có khóa ngoại, chúng tôi đặt câu lệnh bảng thay đổi trong biến và nếu không có, chúng tôi đặt một câu lệnh giả. Và sau đó chúng tôi thực hiện nó.