【问题标题】:SQL TRIGGER From one table to another when updateSQL TRIGGER 更新时从一张表到另一张表
【发布时间】: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 个触发器,代码会是什么样子?

标签: mysql sql triggers phpmyadmin


【解决方案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 个触发器,代码会是什么样子?
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多