Я новичок в написании процедур, я проверил некоторые сообщения stackoverflow, но не найдено ни одного сообщения для удаления всех внешних ключей для определенной таблицы.
У меня есть процедура, написанная ниже.
drop procedure if exists remove_foreign_key;
delimiter ;;
create procedure remove_foreign_key(vTableName varchar(128)) begin
if exists (select table_name from information_schema.columns where table_schema=database() and table_name = vTableName) then
(SELECT concat('ALTER TABLE ', TABLE_NAME, ' DROP FOREIGN KEY ', CONSTRAINT_NAME, ';')
FROM information_schema.key_column_usage
WHERE table_schema=database() and TABLE_NAME = vTableName
AND referenced_table_name IS NOT NULL);
end if;
end if;
end;;
delimiter ;
call remove_foreign_key('my_table_name');
вышеуказанный запрос возвращает мне все запросы (количество внешних ключей, содержащихся в таблице), которые необходимо выполнить, но я хочу выполнить их один за другим. Я читал о курсоре, но не уверен насчет его реализации.кто-нибудь поможет?