0

我应该为更新创建一个 sql 触发器,它只会在受影响的行大于 0 时激活。然而,即使受影响的行是 0(或新记录与旧记录相同),它仍然会触发触发器。在执行下面的插入查询之前,我想检查受影响的行数。提前致谢!对不起我的语法!

DELIMITER $$

DROP TRIGGER /*!50032 IF EXISTS */ `dbase`.`table_update_trigger`$$

CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `table_update_trigger` AFTER UPDATE ON `table` 
    FOR EACH ROW BEGIN

IF (@@ROWCOUNT > 0) THEN
INSERT INTO 
    table_audit_trail
    (column1,
    column2,
    column3,
    column4,
    column5,
    column100) 
VALUES
    (old.column1,
    old.column2,
    old.column3,
    old.column4,
    old.column5,
    old.column100);
END IF;
END;
4

1 回答 1

0

MySQL中没有@@ROWCOUNT。您可以阅读这篇文章以了解如何替换它。

但你不需要那个。您的触发器是for each row这样的,它会为每个更新的行触发。(但这并不意味着您的行已更改。只是它们已被某些语句更新。)

于 2012-05-30T07:53:44.787 回答