所以我目前正在研究MySQL触发器。我插入新记录时尝试为两个变量赋值。以下是查询:
SET mssgDocNo =(SELECT Document_ID FROM CORE_MSSG WHERE Message_ID = new.MSSG_ID);
SET mssgRegime =(SELECT CONCAT(Regime_Type,Regime_Code)FROM T_DOC WHERE CD_Message_ID = new.MSSG_ID);;
由于某种原因,第二个SQL查询没有选择“新的.MSSG_ID'条件,而同一触发器中的第一个查询识别它。我真的无法弄清楚似乎是什么问题。
当我更换新的.MSSG_ID'在第二个查询中使用来自数据库的硬编码值似乎可行。我怀疑新的.MSSG_ID'是问题,因为它在第一个查询中完美地运行。
我已经尝试了很多我能想到的东西。非常感谢帮助。
答案 0 :(得分:0)
我会更简单地写这些:
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在函数调用后解析空格时遇到问题。