Bazı yabancı anahtarları bırakmam gereken bir veritabanım var, ancak yabancı anahtarların hala var olup olmadığını önceden bilmiyorum.Yabancı anahtarları bulmak için sorgu
Hile yapan bazı saklı yordamları (http://forums.mysql.com/read.php?97,218825,247526) buldum, ancak bunun için saklı yordam oluşturmak istemiyorum.
Sadece saklı prosedürlerde IF EXISTS
kullanabilir miyim ... Ben saklı yordam içindeki sorgu kullanmayı denedim ama (vs .. vs GELEN BOŞ SEÇ ederse" kullanarak bir hata alıyorum?
şimdi, çalıştırabilirsiniz tek şey
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';
ve bu da
denedim
IF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF;
ama olsun bir You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF' at line 1
Ben basit sorgu ile forumlarda örnekler için baktım ve bu neden çalışmadığını anlamaya olamaz.
NOT: Düzenleme Sen Bilgi düzeni bağlanması gereken bozuk bir bağlantıyı
Sorgunuz neye benziyor? –
Özellikle "yabancı anahtarları bırak" ile ne demek istiyorsunuz? – gview
@ GALER TABLOSU 'table' DROP FOREIGN KEY 'fk' gibi bir şey gör; –