当发生约束违反异常时
When constrain violation exception occures
我使用 jdbc 并关闭自动提交。我有一个带有唯一索引的 table。是否有可能在 Connection#commit 而不是 PreparetStatement#execute 上发生约束违反异常。
就我而言 (Oracle),它总是发生在 'execute'。
是否依赖于数据库?
通常在执行命令时而不是在提交时评估约束。
但是SQL有一个特性,定义约束为DEFERRABLE:那么完整性检查可以推迟到交易完成的时候。
在 Oracle 中,可以使用 DEFERRABLE clause in the constraint definition and the SET CONSTRAINTS DEFERRED 命令实现此行为。
我使用 jdbc 并关闭自动提交。我有一个带有唯一索引的 table。是否有可能在 Connection#commit 而不是 PreparetStatement#execute 上发生约束违反异常。
就我而言 (Oracle),它总是发生在 'execute'。 是否依赖于数据库?
通常在执行命令时而不是在提交时评估约束。
但是SQL有一个特性,定义约束为DEFERRABLE:那么完整性检查可以推迟到交易完成的时候。
在 Oracle 中,可以使用 DEFERRABLE clause in the constraint definition and the SET CONSTRAINTS DEFERRED 命令实现此行为。