【问题标题】:Mysql trigger, select and then updateMysql触发,选择然后更新
【发布时间】:2016-06-27 03:55:08
【问题描述】:

如果我分别创建这 2 个 MySQL 触发器,它们都可以执行。但我无法将它们组合起来以将持续时间 x 率相乘。

如果存在则删除触发器deduct_balance; 创建定义器=root@localhost 触发器deduct_balance 更新后transactions 每一行 SET @Rate = (SELECT rate FROM languages WHERE languages.idlanguages =contracts.languages_idlanguajes);

如果存在则删除触发器deduct_balance; 创建定义器=root@localhost 触发器deduct_balance 更新后transactions 每一行 更新合约 SET balance = 余额 -(UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date)) / 60 WHERE contracts.idcontracts = new.contracts_idcontracts

合并(我收到错误) 如果存在则删除触发器deduct_balance; 创建定义器=root@localhost 触发器deduct_balance 更新后transactions 每一行 SET @Rate = (SELECT rate FROM languages WHERE languages.idlanguages =contracts.languages_idlanguajes); 更新合约 SET balance = balance -(UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date)) / 60; WHERE contracts.idcontracts = new.contracts_idcontracts

有什么想法吗?

我收到此错误 错误 查阅 SQL:

更新合约 SET balance = balance -(UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date)) / 60; MySQL ha dicho:文档

1054 - “字段列表”中的未知列“NEW.end_date”

【问题讨论】:

  • 你得到什么错误?
  • 你有一个额外的;在组合查询中的 WHERE 之前。 balance -(UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date)) / 60; WHERE
  • 对 ;不应该在那里,但错误仍然存​​在

标签: mysql triggers


【解决方案1】:

它是这样工作的: 更新合约 SET balance = balance -(((UNIX_TIMESTAMP(NEW.end_date) - UNIX_TIMESTAMP(OLD.start_date)) / 60) * (SELECT rate FROM languages WHERE languages.idlanguages = new.languages_idlanguages)) WHERE contracts.idcontracts = new.contracts_idcontracts

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2014-09-01
    • 2013-05-24
    • 2023-03-27
    • 2021-01-04
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多