1

如何在 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
4

2 回答 2

2

这个文件

触发器不能使用显式或隐式开始或结束事务的语句,例如 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 不存在,它将阻止您插入新记录。

于 2012-06-21T23:50:40.783 回答
1

它也在 MySQL 中回滚。在此处查看文档。

于 2012-06-21T23:36:28.500 回答