| Server IP : 88.99.149.37 / Your IP : 216.73.216.141 Web Server : nginx/1.31.2 System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64 User : muralimurth ( 1015) PHP Version : 8.4.23 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/mysql/mysql-test/main/ |
Upload File : |
#
# 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;
ERROR 45000: 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;
ERROR 45000: 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;
ERROR 45000: 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;
ERROR 45000: Error in AFTER UPDATE
SELECT * FROM log ORDER BY id;
id msg
1 before update
#
# Cleanup
#
DROP TABLE t1, log;