MySQL触发错误:根据另一张表的更新或插入更新一个表的字段值

时间:2019-03-13 13:53:31

标签: mysql sql triggers

我想根据另一个表的更新和插入来更新MySQL中的一个表。场景是这样的,当有人更改主表中列的状态时,应针对其匹配ID更新子表的列字段。 表格如下:

po_request 
Id  po_id   status
1   E0001   Requested
2   E0002   Received 

PO_LINE

Id po_id is_received 
6  E0001    0
7  E0002    0

每次状态更改为“已接收”时都需要更新Po_line表,或者直接在表中插入“已接收”。我已经触发了,但是没有用。触发

DROP TRIGGER IF EXISTS `t1`;
DELIMITER $$
CREATE TRIGGER `t1`
AFTER UPDATE ON po_request FOR EACH ROW 
BEGIN 
IF NEW.`status` = 'Received' 
THEN 
UPDATE po_line JOIN po_request ON po_request.po_id = po_line.po_id SET is_received = '1' WHERE po_request.status = 'Received'; END IF;
END$$
DELIMITER ; 

触发器已成功加载到表中,但是当我更新表时会引发非常奇怪的错误:
错误代码:1054。“字段列表”中的未知列“ date_received”。

1 个答案:

答案 0 :(得分:0)

我认为您需要通过避免加入表并在where子句中与关键字NEW进行匹配来更新它。它引用另一个表id,例如:

UPDATE po_line 
SET po_line.is_received = '1' 
WHERE new.po_id = po_id 
AND po_request.status = 'Received';