CREATE TABLE `tbl_backup` (
`user_email` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`user_email` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER ;;
CREATE TRIGGER `dousers` BEFORE INSERT ON `users` FOR EACH ROW
BEGIN
IF LOWER(NEW.user_email) LIKE '%@test.pl' THEN
INSERT INTO tbl_backup (`user_email`) VALUES (NEW.user_email);
SIGNAL SQLSTATE '45000' SET message_text = 'Strange error!';
END IF;
END;;
DELIMITER ;
触发工作,但只有一半。当条件满足时,我得到错误(这个在触发器Strange error!
中定义),但INSERT INTO tbl_backup
不起作用。我在tbl_backup
表中没有新记录。如果我从触发器中删除SIGNAL SQLSTATE
,那么当条件满足时,我会在tbl_backup
中看到新记录。我还使用较早的MySQL 5.1和call some_non_exist_function
来测试此触发器,它就像一个魅力。我做错了或在MySQL 5.5中我不能在单个触发器中使用INSERT
和SIGNAL
?
MySQL ver 5.5.45