#
# Test with triggers that succeed
#
CREATE TABLE t1 (id INT PRIMARY KEY, val INT);
CREATE TABLE log (id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255));
INSERT INTO t1 VALUES (1, 1);
CREATE TRIGGER t1_before_update BEFORE UPDATE ON t1 FOR EACH ROW
INSERT INTO log (msg) VALUES ('before update');
CREATE TRIGGER t1_after_update AFTER UPDATE ON t1 FOR EACH ROW
INSERT INTO log (msg) VALUES ('after update');
#
# Normal UPDATE with no data change
# Expected: Both BEFORE and AFTER triggers fire.
#
TRUNCATE log;
UPDATE t1 SET val = 1 WHERE id = 1;
SELECT * FROM log ORDER BY id;
id msg 1 before update 2 after update
TRUNCATE log;
#
# INSERT ... ON DUPLICATE KEY UPDATE with no data change
# Expected: Both BEFORE and AFTER triggers fire.
#
INSERT INTO t1 (id, val) VALUES (1, 1) ON DUPLICATE KEY UPDATE val = 1;
SELECT * FROM log ORDER BY id;
id msg 1 before update 2 after update
TRUNCATE log;
#
# Part 2: Test with triggers that fail
#
DROP TRIGGER t1_before_update;
DROP TRIGGER t1_after_update;
#
# Failing BEFORE UPDATE trigger
#
CREATE TRIGGER t1_before_update_fail BEFORE UPDATE ON t1 FOR EACH ROW SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Error in BEFORE UPDATE';
#
# Normal UPDATE with no data change (fails due to BEFORE trigger)
#
UPDATE t1 SET val = 1 WHERE id = 1; ERROR45000: Error in BEFORE UPDATE
# INSERT ... ON DUPLICATE KEY UPDATE with no data change (fails due to BEFORE trigger)´
TRUNCATE log;
INSERT INTO t1 (id, val) VALUES (1, 1) ON DUPLICATE KEY UPDATE val = 1; ERROR45000: Error in BEFORE UPDATE
DROP TRIGGER t1_before_update_fail;
CREATE TRIGGER t1_before_update_log BEFORE UPDATE ON t1 FOR EACH ROW
INSERT INTO log (msg) VALUES ('before update');
CREATE TRIGGER t1_after_update_fail AFTER UPDATE ON t1 FOR EACH ROW SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Error in AFTER UPDATE';
#
# Failing AFTER UPDATE trigger
#
UPDATE t1 SET val = 1 WHERE id = 1; ERROR45000: Error in AFTER UPDATE
SELECT * FROM log ORDER BY id;
id msg 1 before update
TRUNCATE log;
#
# Test ON DUPLICATE KEY UPDATE with no data change (failing AFTER UPDATE trigger)
#
INSERT INTO t1 (id, val) VALUES (1, 1) ON DUPLICATE KEY UPDATE val = 1; ERROR45000: Error in AFTER UPDATE
SELECT * FROM log ORDER BY id;
id msg 1 before update
#
# Cleanup
#
DROP TABLE t1, log;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.