buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

一个“不能将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。这时就原因就浮出水面了。

posted on 2011-10-14 14:23  buguge  阅读(706)  评论(0)    收藏  举报