【发布时间】:2012-05-30 07:44:07
【问题描述】:
我应该为更新创建一个 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;
【问题讨论】:
-
“不顺利”是什么意思?请编辑问题以准确说明会发生什么以及您希望发生什么。
-
我对 MySQL 不太了解,但我认为定义为
FOR EACH ROW的触发器只会触发......如果有受影响的行。如果没有受影响的行,此触发器会触发多少次? -
我读了你的问题,但遗憾的是它并不顺利。请在这件事上给予我帮助! (通过提供错误消息、记录预期和意外行为等。我们不是通灵者,抱歉。)
-
对不起我的语法,我修改了我的问题以更准确地说明我想要发生的事情。谢谢!