插入值执行触发
问题描述:
后我有2代表具有这种结构:插入值执行触发
ID | Revision | Purpose
-------------------------
1 | A | 3
表1是其中I保存该信息,表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
答
您可以使用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
将存在于相同的连接中。