我想根据另一个表的更新和插入来更新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”。
答案 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';