【问题标题】:trigger update copy information触发更新拷贝信息
【发布时间】:2019-07-16 16:56:40
【问题描述】:

我想创建一个执行以下操作的触发器: 将现有记录上的一列信息 jobnumber 从一个表 (jobs) 复制到另一个表(材料)到 attachedjobnumber

我还没有找到正确的语法来说明这一点。当我插入新作业时 - 没有任何内容得到更新,也没有插入新行,但是日志中没有错误消息。

我还需要将 bool (hasjobnumber) 设置为 true - 当我测试该触发器时 - 它工作正常。

这让我觉得设置material.attachedjobnumber = jobs.jobnumber 的值是问题所在,我猜jobs.jobnumber 在更新表格材料时没有参考...

如果这是真的 - 正确的语法是什么?

我已经测试了单独的触发器,到目前为止,这个触发器工作正常。

UPDATE material 
SET isjobyet = "HAS"  
WHERE barcode1 IN (
SELECT primaryRFID
FROM jobs
WHERE jobs.primaryRFID = material.barcode1
)

由于此代码确实有效 - 我假设非静态 JobNumber 值是问题的根源。因为“HAS”已正确更新。

UPDATE material 
SET material.AttachedJobNumber = jobs.JobNumber  
WHERE barcode1 IN (
SELECT primaryRFID
FROM jobs
WHERE jobs.primaryRFID = material.barcode1
) 

由此 - 我希望在每次插入表格作业之后:

jobs.JobNumber 被分配给material.AttachedJobName

这只会更新material.barcode1 =jobs.primaryrfid所在的物料行。

但根本没有插入新行。

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    在执行 UPDATE 之前, 实际上,您可以使用 SELECT [skip the UPDATE SYNTAX] 使用相同的脚本 这样您就可以在不提交任何内容的情况下监控您的脚本。

    而且我也不建议在子查询中使用它

    WHERE jobs.primaryRFID = material.barcode1
    

    这种连接表的条件适用于 IN-SELECT 子查询。

    如果您在 [WHERE] 子句中执行子查询,请尝试将其视为不同的缓冲区,不要先连接它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2011-09-05
      相关资源
      最近更新 更多