一个“不能将null值插入列”的问题
一个worker程序运行时出现异常:不能将null值插入列“wareId”。
很显然,这是sql中某个insert命令出现的问题。
最后从ibatis的mapping文件中找到了这个sql:
1 insert tableA(wareId,wareName,....)
2 select a.wareId, a.wareName,...
3 from
4 (
5 select wareId, wareName,...
6 from tagWare a
7 left join (###) b on a.wareId=b.wareId
8 ) as a
9 full join
10 (
11 select ...
12 from tagWare a
13 left join (***) b on a.wareId=b.wareId
14 ) as b on a.wareId=b.wareId
15 full join
16 (
17 select ...
18 from tagWare a
19 left join (~~~) b on a.wareId=b.wareId
20 ) as c on a.wareId=b.wareId
上面的sql中,表tableA的主键是wareId,full join关联起来的几个子表都是以tagWare表为主的(我们且不说sql编写的如何如何),很难理解为什么会存在为null值的wareId呢?
百思不得其解。
最后,一位同事找出了原因, 因为有其他的程序在执行,并不断更新tagWare表的记录,包括delete和insert。这时就原因就浮出水面了。
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/articles/2212190.html
浙公网安备 33010602011771号