Нужно сделать процедуру, которая будет удалять триггеры. Вариант 1.
DELIMITER $$
CREATE PROCEDURE sym_drop_cur_triggers (IN database_name VARCHAR(255), table_name VARCHAR(255))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE trigger_to_rm VARCHAR(255);
DECLARE cur1 CURSOR FOR SELECT t.TRIGGER_NAME from information_schema.TRIGGERS t
WHERE t.TRIGGER_SCHEMA = database_name
AND t.EVENT_OBJECT_TABLE = table_name;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO trigger_to_rm;
IF NOT done THEN
-- remove curent trigers
IF lower(trigger_to_rm) LIKE 'sym_%' THEN
set @rmquery = concat('DROP TRIGGER ', database_name, '.' , trigger_to_rm);
PREPARE STMT FROM @rmquery;
EXECUTE STMT;
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
END $$
DELIMITER ;
Но MySQL не поддеживаетя такое. Error Code: 1295. This command is not supported in the prepared statement protocol yet
Вариант 2
SELECT CONCAT(database_name, '.' ,TRIGGER_NAME) INTO trigger_name_for_db
FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA = database_name
AND EVENT_OBJECT_TABLE = table_name ;
DROP TRIGGER trigger_name_for_db;
Но переменные не подставляются для drop table нужна именно строка, ошибка:
Trigger not exists.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня возникла проблема: Который раз пытаюсь установить MySQL на Ububtu-server (1804) и постоянно какие-то ошибки
И когда делаю POST:
столкнулся со следующей задачей: Необходимо автоматизировать печать сертификата, в котором уникальные (имя, промокод, и даты действия сертификата)Сертификат...