为何插入Test_Results表时触发MariaDB ERROR 4078 (HY000)错误?
错误原因与修复方案
核心错误原因:触发器代码存在语法错误,导致数据类型不匹配
查看触发器代码中的这一行:ELSEIF NEW.Test_ID = (4, 8) THEN这里用
=运算符去匹配一个行构造器(4, 8),但NEW.Test_ID是单个整数类型,MariaDB不支持单个整数和行数据进行等于比较,因此触发ERROR 4078 (HY000): Illegal parameter data types int and row for operation '='错误。插入Test_ID=5时正常,是因为该值会匹配到
ELSEIF NEW.Test_ID in (5, 27, 28) THEN分支,触发器执行完该分支逻辑后就结束,不会触及后面错误的代码行。而插入Test_ID=4或0时:
- 插入4时,会直接进入这个错误的分支判断,触发类型不匹配错误;
- 插入0时,前面所有分支都不匹配,会执行到这个错误的分支判断,同样触发错误。
修复方法:
将错误行的=改为IN,修正后的代码如下:ELSEIF NEW.Test_ID IN (4, 8) THEN另外,最后一行
ELSEIF NEW.Test_ID in (0) THEN可以简化为ELSEIF NEW.Test_ID = 0 THEN,语法更简洁,不修改也不会引发错误。
内容的提问来源于stack exchange,提问作者Endalma
相关产品推荐
相关产品推荐

