触发更新副本信息

时间:2019-07-16 00:17:32

标签: mysql triggers

我想创建一个执行以下操作的触发器: 将一列信息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处的物料行。

但根本没有插入新行。

1 个答案:

答案 0 :(得分:0)

在执行UPDATE之前, 实际上,您可以使用SELECT使用相同的脚本[跳过UPDATE SYNTAX] 这样,您可以监视脚本而无需提交任何内容。

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

WHERE jobs.primaryRFID = material.barcode1

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

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