2016-07-27 131 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將存在於相同的連接中。