SQL TRIGGER 更新时从一张表到另一张表
Posted
技术标签:
【中文标题】SQL TRIGGER 更新时从一张表到另一张表【英文标题】:SQL TRIGGER From one table to another when update 【发布时间】:2012-11-18 10:27:21 【问题描述】:我的桌子:
表1:
primary key = id1;
cash1 = thing I want to pick from that table;
表2:
primary key = id2;
cash2 = thing I want to pick from that table;
表3:
foreign key1 = id1;
foreign key2 = id2;
cash3 = thing I want to make;
所以,我想做:
Update (or insert into?) cash3 = cash1*cash2/100 when UPDATE ON cash1 or cash2.
尝试了很多东西,似乎没有任何工作......
【问题讨论】:
你的cash1
和cash2
的数据类型是什么?您遇到什么错误?
您应该描述表格和您遇到的错误
是的,对不起,在这里:我没有具体说明,我认为这很重要。 table1 是人的数据库(如 id(唯一)、姓名、电话、他的薪水(cash1)等),Table2 是事物列表(id、name、cash2),table3 是划分这两个值的表。我试过这样做: CREATE TRIGGER test AFTER UPDATE table1 OR table2 AS BEGIN UPDATE table3 SET table3.cash3=table1.cash1*table2.cash2/100 WHERE table3.cash3=table1.cash1*table2.cash2/100 END; $$ 如果我做 2 个触发器,代码会是什么样子?
【参考方案1】:
您的触发器(每个 table1 和 table2 都需要一个)应该如下所示:
create trigger cash1 on table1 for insert, update
Select @c1=sum(cash) from table1
Select @c2=sum(cash) from table2
Update table3 set cash=@c1*@c2/100
end
注意:以上只是伪代码,因为我不熟悉mysql的语法。
这个触发器的作用是,当您更改 table1 中的金额时,它会从 table1 和 table2 中选择金额并计算 table3 的金额并更新它。
您需要另一个触发器,它在 table2 上执行相同的操作。
在不知道你的表设置(列名)的情况下很难给你一个像样的代码示例
希望这会有所帮助。
【讨论】:
我没有说具体,我认为这很重要。 table1 是人的数据库(如 id(唯一)、姓名、电话、他的薪水(cash1)等),Table2 是事物列表(id、name、cash2),table3 是划分这两个值的表。我试过这样做: CREATE TRIGGER test AFTER UPDATE table1 OR table2 AS BEGIN UPDATE table3 SET table3.cash3=table1.cash1*table2.cash2/100 WHERE table3.cash3=table1.cash1*table2.cash2/100 END; $$ 如果我做 2 个触发器,代码会是什么样子?以上是关于SQL TRIGGER 更新时从一张表到另一张表的主要内容,如果未能解决你的问题,请参考以下文章