我有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中使用此字段。
答案 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
将存在于同一连接中。