发生约束违规异常时

时间:2016-04-04 08:31:26

标签: java sql jdbc transactions

我使用jdbc和autocommit off。我有一张具有独特索引的表格。是否可能在Connection#commit上发生约束违规异常,而不是在PreparetStatement#execute上发生。

就我而言(Oracle),它总是出现在'执行'上。 它取决于数据库吗?

1 个答案:

答案 0 :(得分:2)

通常在执行命令时评估约束,而不是在commit时评估约束。

但是SQL有一个将约束定义为 DEFERRABLE 的功能:然后可以将完整性检查推迟到事务完成时。

在Oracle中,可以使用约束定义中的DEFERRABLE子句和SET CONSTRAINTS DEFERRED命令来实现此行为。