一个“不能将null值插入列”的问题

一个worker程序运行时出现异常:不能将null值插入列“wareId”。
很显然,这是sql中某个insert命令出现的问题。
最后从ibatis的mapping文件中找到了这个sql:

	insert tableA(wareId,wareName,....)

	select a.wareId, a.wareName,...

	from

	(

	 select wareId, wareName,...

	 from tagWare a

	 left join (###) b on a.wareId=b.wareId

	) as a

	full join

	(

	 select ...

	 from tagWare a

	 left join (***) b on a.wareId=b.wareId

	) as b on a.wareId=b.wareId

	full join

	(

	 select ...

	 from tagWare a

	 left join (~~~) b on a.wareId=b.wareId

	) as c on a.wareId=b.wareId
上面的sql中,表tableA的主键是wareId,full join关联起来的几个子表都是以tagWare表为主的(我们且不说sql编写的如何如何),很难理解为什么会存在为null值的wareId呢?

百思不得其解。
最后,一位同事找出了原因, 因为有其他的程序在执行,并不断更新tagWare表的记录,包括delete和insert。这时就原因就浮出水面了。

 

你可能感兴趣的:(一个“不能将null值插入列”的问题)