触发器中的mysql语句没有“拾取”where子句中的条件

olqngx59  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(371)

所以我现在正在开发一个mysql触发器。我尝试在插入新记录时为两个变量赋值。以下是查询:
设置mssgdocno=(从core\u mssg中选择document\u id,其中message\u id=new.mssg\u id);
设置mssgregime=(从t_doc中选择concat(区域类型,区域代码),其中cd_message_id=new.mssg_id);;
由于某些原因,第二个sql查询没有提取“new.mssg\u id”条件,而同一触发器中的第一个查询可以识别它。我真的搞不懂是什么问题。
当我在第二个查询中将“new.mssg\u id”替换为数据库中的硬编码值时,它似乎起作用了。我怀疑“new.mssg\u id”是个问题,因为它在第一个查询中工作得非常好。
我几乎试过我能想到的任何东西。谢谢你的帮助。

ghhaqwfi

ghhaqwfi1#

我会把这些写得更简单:

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的某些版本在函数调用后解析空格时遇到问题。

相关问题