2011-04-17 40 views
0

我正在使用Jdbc。当外键约束被破坏时,会引发MySQLIntegrityConstraintViolationException。使用Jdbc捕获特定的FK异常

现在我只是做一些预先检查之前做插入,以防止这种情况。但我在想......只是试图直接插入插入然后捕获异常,会更有效率吗?你觉得这怎么样?

为了做到这一点,我需要能够检查为什么 MySQLIntegrityConstraintViolationException在捕获之后被抛出。例如,我可能需要知道其中 FK约束失败。这可以做到吗?

回答

2

但是我在想......试试直接插入然后捕获异常会更有效吗?

如果异常很少发生(通常是这种情况),这确实是一种更高效,更简单的方法。

如果获得FK违规的可能性比插入前检查(提供它们不会触及数据库)高,将会节省往返db的往返行程,从而提高效率。

回复:找出失败的原因。供应商异常通常包含一些关于哪些约束触发了异常的信息。您应该查看供应商例外的字段和方法。