2016-07-27 75 views
0

后我有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

回答

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将存在于相同的连接中。