【问题标题】:How to update a table in another database using triggers?如何使用触发器更新另一个数据库中的表?
【发布时间】:2017-06-04 19:43:37
【问题描述】:

我想更新另一个数据库中的另一个表,这是针对库存数量的,当数量字段更新时,再更新另一个表。

我有这个:

DELIMITER //
DROP TRIGGER IF EXISTS syncFromStockSys //

CREATE TRIGGER syncFromStockSys BEFORE UPDATE on db1.quantity

FOR EACH ROW BEGIN

    UPDATE TABLE db2.oc_product 
    SET  `quantity` = NEW.quantity 
    WHERE SKU = SKU;   //<<-----------
END //
DELIMITER ;

但是有一个sintax错误 我正在使用 phpMyAdmin 来完成这个。

这是错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法使用

'TABLE db2.oc_product'附近 SET quantity = NEW.quantity SKU = 新的。在第 5 行

【问题讨论】:

  • 包括您在问题中收到的语法错误的内容
  • 我添加了输出

标签: mysql triggers synchronization


【解决方案1】:

不要将 PHP myadmin 用于任何严肃的工作。给自己一个合适的mysql客户端。至于错误。您不应在触发块中包含分隔符 //

DELIMITER //
DROP TRIGGER IF EXISTS syncFromStockSys //

CREATE TRIGGER syncFromStockSys BEFORE UPDATE on db1.quantity

FOR EACH ROW BEGIN

    UPDATE db2.oc_product 
    SET  `quantity` = NEW.quantity 
    WHERE SKU = SKU; 
END //
DELIMITER ;

你可能是说

 WHERE SKU = NEW.SKU;

【讨论】:

  • 我之前尝试过在块和 new.sku 内没有分隔符;无论如何仍然无法正常工作,有什么线索吗?
  • P请不要在堆栈溢出时使用“不工作”。发布确切的错误和涉及的行号
  • 好的,你知道为什么会出现这个错误吗?
  • 我很傻,你把它写成update table,我第一次尝试就完全错过了。查看更新
  • 是的,这就是问题所在,请看看我的其他问题,我不明白为什么会这样......
猜你喜欢
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 2011-07-12
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多