【问题标题】:I can't add a Trigger using 3 tables?我不能使用 3 个表添加触发器?
【发布时间】:2015-02-05 10:56:16
【问题描述】:

所以我有 table1、table2、table3 ...

table 1 has G_Id, G_y
table 2 has S_ID, G_ID(FK), S_Date
Table 3 has N_ID, S_ID(FK), N_Date

我想在表 3 更新后创建触发器 对于任何新的 N_date (table3) 通过计算 (N_date - S_date) * 11 更新表 1 G_y(不是日期)

我想不通。

【问题讨论】:

  • 有人知道吗?
  • 你能解释一下你想用触发器再次更新什么表吗?你的句子/解释没有意义。
  • 这似乎不是一个非常困难的问题,您尝试过什么。您编写了哪些 SQL 尝试。你研究过 ORACLE After Triggers 吗?
  • 我想在表 3 更新时更新表 1 字段 G_y。并且计算是(新更新的 N_date - S_Date)* 11 然后添加到表 1 中的 G_Y。我不知道这是否有意义
  • 是的,我研究并尝试创建触发器,但它不起作用。我对触发器没有太多经验。

标签: mysql sql database oracle triggers


【解决方案1】:

假设您使用的是 MySQL,您可以这样做

CREATE TRIGGER n_date_insert_trigger 
AFTER INSERT ON table3
FOR EACH ROW
UPDATE table1 t1 JOIN
(
  SELECT g_id, DATEDIFF(NEW.n_date, s_date) * 11 g_y
    FROM table2 t2 
   WHERE s_id = NEW.s_id
) q ON t1.g_id = q.g_id
   SET t1.g_y = q.g_y;

CREATE TRIGGER n_date_update_trigger 
AFTER UPDATE ON table3
FOR EACH ROW
UPDATE table1 t1 JOIN
(
  SELECT g_id, DATEDIFF(NEW.n_date, s_date) * 11 g_y
    FROM table2 t2 
   WHERE s_id = NEW.s_id
) q ON t1.g_id = q.g_id
   SET t1.g_y = q.g_y;

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多