Триггер: запрет выполнения запроса 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'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д