我想创建一个执行以下操作的触发器:
将一列信息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
处的物料行。
但根本没有插入新行。
答案 0 :(得分:0)
在执行UPDATE之前, 实际上,您可以使用SELECT使用相同的脚本[跳过UPDATE SYNTAX] 这样,您可以监视脚本而无需提交任何内容。
而且我也不建议在子查询中使用它
WHERE jobs.primaryRFID = material.barcode1
这种连接表的条件适用于IN-SELECT子查询。
如果要在[WHERE]子句中执行子查询,请尝试将其视为不同的缓冲区,不要先连接它们。