sql >> Databasteknik >  >> RDS >> Mysql

Släpp främmande nyckel bara om den finns

Om du vill släppa främmande nyckel om den finns och inte vill använda procedurer du kan göra det så här (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;

Om det finns en främmande nyckel lägger vi alter table-satsen i variabeln och om det inte finns lägger vi en dummy-sats. Och sedan kör vi det.



  1. Hur vi använder databaser i vår vardag

  2. Vad är DATALENGTH()-ekvivalenten i MySQL?

  3. Rekommendationer för prestandajustering av MySQL my.cnf

  4. Säkerhetsfunktioner i SQL Server 2017