这可能是非常愚蠢的问,但我面临这种情况:如何在由主键违规引起的BatchUpdateException之后继续插入行?
我有一个表,我填充每次用户发送请求时,我在一个字段上使用日期(一个日期)从我插入的最后一行。问题是,我插入的最后一行总是尝试插入本身,因为它在我正在考虑的范围内。我知道一个解决方案可能只是在最后一行添加一两分钟,但是从这个问题出发。 我怎样才能在java中,使用PreparedStatement和批处理插入多行,跳过发送给我那个PRIMARY_KEY_VIOLATION异常,并继续插入那些没问题的? 我的意思是,例如,我在我的表中有一行25的值“runner”,这是我的主键,然后我想要插入这些行: (25,26,27) 25值不能被插入,所以我想捕捉异常,并继续插入26和27值。 这可能吗?
我感谢您的帮助和评论。先谢谢你!
请参阅'BatchUpdateException' API。你所提出的建议可能会成为可能,但会非常丑陋。避免PK违规。创建一个序列,以便您可以“插入到表T SELECT MYSEQUENCE.NEXTVAL,OTHER_FIELD1,OHTER_FIELD2 WHERE ... –
@AndrewS - 使用序列不能解决问题。确定它会生成一个唯一的值,但您刚刚插入了重复的记录使用无意义的技术密钥 – APC
问题是,为什么选择已插入的行?当然,您需要解决的问题是获取有效的数据源,而不是处理数据目标中的异常。 – APC