如何在 MySQL 中执行等效语句?如果输入是某个值,我想要它,不要插入行。在 SQL SERVER 中,我只能说 ROLLBACK。MySQL中的等效命令是什么?谢谢你。
CREATE TRIGGER tr_some_trigger
ON some_table
FOR INSERT
AS
BEGIN
IF inserted.topic == 'test' THEN
ROLLBACK
ENDIF
END
如何在 MySQL 中执行等效语句?如果输入是某个值,我想要它,不要插入行。在 SQL SERVER 中,我只能说 ROLLBACK。MySQL中的等效命令是什么?谢谢你。
CREATE TRIGGER tr_some_trigger
ON some_table
FOR INSERT
AS
BEGIN
IF inserted.topic == 'test' THEN
ROLLBACK
ENDIF
END
从这个文件:
触发器不能使用显式或隐式开始或结束事务的语句,例如 START TRANSACTION、COMMIT 或 ROLLBACK。
所以ROLLBACK
不会在您的触发器中工作,但是如果触发器引发异常/错误,它将阻止插入成功,所以您可以做的是在满足您的条件时引发异常(一种方法是调用未定义的函数)。
例如:
DELIMITER $$
CREATE
TRIGGER `db`.`before_insert` BEFORE INSERT
ON `db`.`dummy_table`
FOR EACH ROW BEGIN
IF new.topic = 'test' THEN
CALL func_1();
END IF;
END$$
DELIMITER ;
假设 func_1 不存在,它将阻止您插入新记录。
它也在 MySQL 中回滚。在此处查看文档。