SQL TRIGGER 更新时从一张表到另一张表

Posted

技术标签:

【中文标题】SQL TRIGGER 更新时从一张表到另一张表【英文标题】:SQL TRIGGER From one table to another when update 【发布时间】:2012-11-18 10:27:21 【问题描述】:

我将开始我在 phpmyadmin 中使用 mysql

我的桌子:

表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.

尝试了很多东西,似乎没有任何工作......

【问题讨论】:

你的cash1cash2的数据类型是什么?您遇到什么错误? 您应该描述表格和您遇到的错误 是的,对不起,在这里:我没有具体说明,我认为这很重要。 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 更新时从一张表到另一张表的主要内容,如果未能解决你的问题,请参考以下文章

sql语句 怎么从一张表中查询数据插入到另一张表中

sql语句 怎么从一张表中查询数据插入到另一张表中

sql语句 怎么从一张表中查询数据插入到另一张表中

Insert select 带选择复制一张表到另一张表

sql语句 怎么从一张表中查询数据插入到另一张表中

Excel VBA 将值从一张表移动到另一张表