Оператор в триггере не «подхватывает» условие в предложении «Где» - PullRequest
0 голосов
/ 06 мая 2018

, поэтому я сейчас работаю над триггером MySQL. Я пытаюсь присвоить значения двум переменным при вставке новой записи. Ниже приведены запросы:

  1. SET mssgDocNo = (ВЫБЕРИТЕ Document_ID ОТ CORE_MSSG WHERE Message_ID = new.MSSG_ID);

  2. SET mssgRegime = (ВЫБЕРИТЕ CONCAT (Regime_Type, Regime_Code) ОТ T_DOC WHERE CD_Message_ID = new.MSSG_ID) ;;

По какой-то причине второй SQL-запрос не получает условие 'new.MSSG_ID', в то время как первый запрос в том же триггере его распознает. Я действительно не могу понять, в чем проблема.

Когда я заменяю 'new.MSSG_ID' жестко закодированным значением из базы данных во втором запросе, это, кажется, работает. Я сомневаюсь, что проблема связана с «new.MSSG_ID», потому что он отлично работает в первом запросе.

Я пробовал почти все, что мог придумать. Буду признателен за помощь.

1 Ответ

0 голосов
/ 06 мая 2018

Я бы написал так проще:

SELECT mssgDocNo := Document_ID
FROM CORE_MSSG
WHERE Message_ID = new.MSSG_ID;

SELECT mssgRegime := CONCAT(Regime_Type, Regime_Code)
FROM T_DOC
WHERE CD_Message_ID = new.MSSG_ID;

SET не обязательно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...