Триггер: запрет выполнения запроса delete * from - MySQL
Формулировка задачи:
Добрый вечер. Столкнулся с такой проблемой. Нужно написать триггер Before Delete, который запретит запрос Delete * from table, чтобы нельзя было удалить все записи в таблице. Подскажите, что делать?
Решение задачи: «Триггер: запрет выполнения запроса delete * from»
textual
Листинг программы
DELIMITER // CREATE TRIGGER table_name_ BEFORE DELETE BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETE canceled'; END; // DELIMITER;
Объяснение кода листинга программы
DELIMITER //- устанавливает специальный символ-делитель для обработки кода SQL.CREATE TRIGGER table_name_- создает триггер с именемtable_name_, который будет выполняться при попытке выполнения запроса DELETE.BEFORE DELETE- указывает, что триггер будет выполняться перед выполнением операции DELETE.BEGIN- начало блока кода триггера.SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETE canceled'- генерирует исключение с сообщением 'DELETE canceled', которое отменяет выполнение операции DELETE.END; //- завершает блок кода триггера.DELIMITER;- возвращает значение символа-делителя к его исходному значению. Вышеуказанный код создает триггер, который отменяет выполнение операции DELETE для таблицы, имя которой указано в переменнойtable_name_. При попытке выполнить запрос DELETE для этой таблицы, триггер сгенерирует исключение, которое отменит выполнение запроса и выведет сообщение 'DELETE canceled'.