的mysql用作在Java异常处理方法的唯一索引(mysql unique index used a

2019-09-16 15:52发布

我想知道是否是一个好主意基于Java中的SQL的唯一索引赶上例外。

我要赶象异常“的重复条目1-0”如果是这样那么处理异常,否则在数据库表中正确地插入?

Answer 1:

我说你不这样做,有两个原因:

  • 该错误消息是有点不清楚:ERROR 1062(23000):重复条目'xxx'的关键1。 你总是100%肯定这关键是1?
  • 它锁定在你特定的数据库供应商

我觉得简单的事务

  • 检查行的存在;
  • 如果行已经存在,抛出一个异常;
  • 插入新行。

性能问题

我说要测量两次,切割一次 。 简介为您具体的使用情况下的使用。 顶我的头我会说,业绩不会除了重DB使用场景的问题。

其原因是,一旦你执行SELECT在那个特定行,其数据将被放置在数据库缓存,并立即用于在对指数进行插入检查INSERT语句。 还铭记保持,通过索引得出的结论是性能不会是一个问题,这种访问的支持。

但是,一如既往,做测量。



Answer 2:

我不明白为什么不能。 它可能比运行前插入一个查询效率更高。 它可能更好地捕捉到了异常的错误代码,而不是承认错误消息,虽然。



Answer 3:

你可以使用替换命令。 它插入基于记录的存在/更新。 而它的原子过,而查询,然后插入/更新不。 这取决于你想,如果你检测键冲突做什么?



文章来源: mysql unique index used as exception handling method in java