Tôi có cơ sở dữ liệu mà tôi cần phải bỏ một số khóa ngoại, nhưng tôi không biết trước liệu các khóa ngoại vẫn còn tồn tại hay không.Truy vấn để tìm khóa ngoài
Tôi đã tìm thấy một số thủ tục được lưu trữ (http://forums.mysql.com/read.php?97,218825,247526) thực hiện thủ thuật, nhưng tôi không muốn tạo một quy trình được lưu trữ cho việc này.
Tôi đã cố gắng sử dụng các truy vấn bên trong thủ tục lưu trữ, nhưng tôi nhận được một lỗi sử dụng "nếu có (SELECT NULL TỪ vv .. vv ...
Tôi có thể chỉ sử dụng IF EXISTS
trong thủ tục lưu trữ?
ngay bây giờ, điều duy nhất tôi có thể chạy là
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';
và tôi đã cố gắng này quá
IF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF;
nhưng tôi nhận được một 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
Tôi đã nhìn các ví dụ trên các diễn đàn với các truy vấn đơn giản và tôi không thể làm cho cảm giác tại sao điều này không hoạt động.
LƯU Ý: Chỉnh sửa để sửa chữa gãy liên kết
Vậy truy vấn của bạn trông như thế nào? –
Cụ thể bạn có ý nghĩa gì khi "thả chìa khóa nước ngoài"? – gview
@ gview một cái gì đó như ALTER TABLE 'table' DROP NGOẠI KEY' fk'; –