select count(*) FROM antecedente_delito WHERE rut_polichile = NEW.rut_polichile
该语句给出的值是 0,而它应该给我 18:/ 我一直在努力寻找其中的任何错误。
为了解决这个问题,我会查看您的实际值并验证 NEW。正在返回您认为应有的内容。有时它可能会进行一些修剪或删除特殊字符,尤其是 _ 和 % 符号可能会在子过程中被剥离。
我将从查询开始:
select top 50 rut_polichile, NEW.rut_plichile FROM antecedente_delito
如果问题不明显,请添加 varbinary 检查:
select top 50 cast( rut_polichile as varbinary), cast(NEW.rut_plichile as varbinary) from antecedente_delito
如果表只有 18 条记录,那么您应该很好地进行上述故障排除,但如果有更多数据,我建议通过 where 语句中的 rowid 或其他标识符来限制上述结果。
这不是答案,但我希望它可以帮助您找到答案。
这是我在 SqlFiddle 中使用/更改您的代码模拟的工作解决方案。 http://sqlfiddle.com/#!2/ac2e9/1
如果对表列的引用通过触发器定义中的 OLD.col_name 或 NEW.col_name 发生,则为主题表的 SELECT 权限。
but in your trigger i can't see any trigger definition. so try without NEW.
for more info: http://www.sqlinfo.net/mysqldocs/v51/triggers.html or http://bugs.mysql.com/bug.php?id=31068