执行触发后插入值

时间:2016-07-27 13:10:47

标签: mysql triggers

我有2个具有这种结构的表:

ID | Revision   | Purpose
-------------------------
1  |     A      |   3

表1是我保存信息的地方,表2在更新表1后填充了触发器。这是触发器:

TRIGGER `update` AFTER UPDATE ON `table 1` 
FOR EACH ROW INSERT INTO table 2 (
Id,
Revision,
Purpose,
)
VALUES
(
OLD.Id,
OLD.Revision,
OLD.Purpose,
);
$$
DELIMITER ;

一切都很好,但现在我想将表2的结构改为:

ID | Revision   | Purpose |  Change
-----------------------------------
1  |     A      |   1     |  Purpose change to 1

我希望用户可以编写表1中的更改​​说明,然后将其保存到表2中。

我尝试创建字段,然后一如既往地进行更新:

Update Table 1 ...... where Id = Id

这样可行但是表2可以有很多具有相同Id的行,所以这不是一个选项。任何解决方案?

此外,我也尝试在表1中创建字段,但这意味着我必须更改所有代码,但我只想在表2中使用此字段。

1 个答案:

答案 0 :(得分:0)

您可以使用MySQL变量:

1:在更新table 1之前,请设置用户变量@purpose_change

 set @purpose_change = 'Purpose change to 1';

2:另外,按以下步骤更改触发器:

CREATE TRIGGER `update` AFTER UPDATE ON `table 1` 
FOR EACH ROW INSERT INTO table 2 (
Id,
Revision,
Purpose,
Change
)
VALUES
(
OLD.Id,
OLD.Revision,
OLD.Purpose,
@purpose_change  /* user variable */
);
$$
DELIMITER ;

@purpose_change将存在于同一连接中。