Может кто-нибудь сказать мне, почему моя ссылка на поле таблицы не работает с этим триггерным запросом? - PullRequest
0 голосов
/ 25 января 2020

У меня проблема с форматированием триггера обновления для моего sqlite проекта. Проект имеет 2 таблицы. Одна таблица называется Equipment и имеет 3 поля:

 - UnitID
 - Last_PMI
 - Preset_Hrs

Другая таблица называется ESPModules, а также имеет 3 поля:

 - UnitID (FK)
 - ESPModuleID
 - Install_Date

Я настроил триггер обновления таблицы ESPModules, который срабатывает каждый раз, когда я изменяю поле UnitID в таблице ESPModules. Поле UnitID имеет отношение один к одному с таблицей Equipment. (Обе таблицы допускают только один уникальный UnitID)

Мой триггер фактически срабатывает, но я не знаю, как ссылаться на поле UnitID в моей таблице ESPModules. Ниже приведено то, что у меня есть, и этот код обновляет запись «Оборудование» при ее запуске:

UPDATE Equipment
SET Last_PMI = date('now'),
Preset_Hrs = 0
WHERE UnitID = "BT-109F"


UPDATE Equipment
SET Last_PMI = date('now'),
Preset_Hrs = 0
WHERE UnitID = ESPModules.UnitID;

Но проблема в том, что мне нужно сослаться на мое поле ESPModules.UnitID, как указано выше: (Другими словами, как Например, когда я набираю существующий UnitID, такой как «BT-109F», он срабатывает, но не работает, когда я пытаюсь сослаться на поле, которое я обновляю и сохраняю. Он выдает эту ошибку: «При фиксации произошла ошибка данные: нет такого столбца: ESPModules.UnitID

Я новичок в sql языке и хотел бы получить некоторую помощь в правильном форматировании этого запроса на обновление.

Спасибо

Клан

1 Ответ

1 голос
/ 25 января 2020

Это объясняется в документации SQLite create trigger :

действия триггера могут получить доступ к элементам вставляемой, удаляемой или обновляемой строки, используя ссылки в форме " NEW.column-name "и" OLD.column-name ", где column-name - это имя столбца из таблицы, с которой связан триггер.

Итак, рассмотрим:

UPDATE Equipment
SET Last_PMI = date('now'),
Preset_Hrs = 0
WHERE UnitID = NEW.UnitID;
...