如何在表A中更新MySQL时触发更新表B中的所有相应值

时间:2014-06-05 07:28:05

标签: php mysql sql triggers

我有两张桌子表1:率表2:书籍。 我想做一个触发器,如果​​任何货币的汇率变化,账簿表中的所有汇率必须相应地改变。以下是表格的结构:

-----------------------------
| Table1 : Rate             |
-----------------------------
| id | name | rate | symbol |
-----------------------------
| 1  |Dollar|59.26 |  $     |
| 2  |Euro  |79.74 |  €     |
| 3  |Pound |98.61 |  £     |
-----------------------------


--------------------------------------
| Table2 : Books                     |
--------------------------------------
| id | name | Price | Cur | PriceInRs|
--------------------------------------
| 1  | ABC  | 15.00 |  $  | 889.43   |
| 2  | PQR  | 62.95 |  €  | 5019.63  |
| 3  | XYZ  | 49.99 |  £  | 4929.51  |
--------------------------------------

随着表1中任何货币的汇率更新:汇率。表2中的列PriceInRs的所有记录:书籍必须反映货币的变化。

我应该如何创建MySQL触发器?

请帮助

1 个答案:

答案 0 :(得分:0)

这是你可以做的,但我强烈建议将费率表中的id存储到Books表而不是符号。

delimiter //
create trigger rate_update after update on Rate
for each row
begin
  if new.rate <> old.rate then
    update Books set PriceInRs = new.rate * Price where Cur = old.symbol ;
  end if ;
end ; //
delimiter ; 

如果您将id存储在books表中,那么更新查询where子句将使用rate表中的id完成,强烈建议这样做。