Ошибка триггера MySQL: обновление значения поля одной таблицы на основе обновлений или вставок другой таблицы - PullRequest
0 голосов
/ 13 марта 2019

Я хочу обновить одну таблицу в MySQL на основе обновления и вставки другой таблицы.Сценарий подобен этому, когда кто-то изменяет статус столбца в основной таблице, поле столбца дочерней таблицы должно обновляться для их соответствующего идентификатора.Таблицы выглядят так, как показано ниже:

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 голосов
/ 14 марта 2019

Я думаю, вам нужно обновить его, избегая объединения таблицы и сопоставления в предложении where со ссылкой на ключевое слово NEW. который ссылается на другую таблицу id вроде:

UPDATE po_line 
SET po_line.is_received = '1' 
WHERE new.po_id = po_id 
AND po_request.status = 'Received';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...