Si vous souhaitez supprimer la clé étrangère si elle existe et ne souhaitez pas utiliser de procédures vous pouvez le faire de cette façon (pour 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;
S'il y a une clé étrangère, nous mettons l'instruction alter table dans la variable et s'il n'y en a pas, nous mettons une instruction factice. Et puis nous l'exécutons.