Обходной путь триггера MySQL для обновления той же таблицы
MySQL по своей сути ограничивает триггеры в обновлении строк в той же таблице, которой они назначены, предотвращая рекурсивные вызовы . Несмотря на это ограничение, существует действенный обходной путь.
Предлагаемый обходной путь
Вместо прямого обновления строк внутри триггера используйте хранимую процедуру, которая выполняет нужную логику. Этот метод отделяет задачу обновления строки от триггера и позволяет обойти ограничение.
Пример
Рассмотрим следующий сценарий:
CREATE TABLE MyTable (
id INT PRIMARY KEY,
attribute VARCHAR(255)
);
-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
-- Issue SQL statement to call a stored procedure that performs the insert
CALL insert_attribute(NEW.id, 'Value');
END;
В приведенном выше примере триггер my_trigger вызывает хранимую процедуру Insert_attribute для вставки строки в MyTable, когда новая запись вставляется в таблицу Products, эффективно имитируя функциональность прямого обновления строки в таблице Products. триггер.
Дополнительные соображения
Хотя этот обходной путь служит функциональным решением, Важно отметить, что он отличается от традиционного триггера с точки зрения производительности и удобства обслуживания. Хранимые процедуры могут привести к дополнительным издержкам и сложности системы базы данных по сравнению с прямыми обновлениями триггеров.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3