我使用jdbc和autocommit off。我有一张具有独特索引的表格。是否可能在Connection#commit上发生约束违规异常,而不是在PreparetStatement#execute上发生。
就我而言(Oracle),它总是出现在'执行'上。 它取决于数据库吗?
答案 0 :(得分:2)
通常在执行命令时评估约束,而不是在commit时评估约束。
但是SQL有一个将约束定义为 DEFERRABLE 的功能:然后可以将完整性检查推迟到事务完成时。
在Oracle中,可以使用约束定义中的DEFERRABLE子句和SET CONSTRAINTS DEFERRED命令来实现此行为。