我想知道在java中根据sql的唯一索引捕获异常是否是一个好主意。
我想捕获像“1-0 的重复条目”这样的异常,如果是这样,则处理异常,否则正确插入数据库表中?
我说你不要这样做,有两个原因:
- 错误消息有点不清楚:错误 1062 (23000):密钥 1 的条目“xxx”重复。您总是 100% 确定哪个键是 1 吗?
- 它将您锁定到特定的数据库供应商
我发现更简单交易地:
- 检查行是否存在;
- 如果该行已经存在则抛出异常;
- 插入新行。
性能问题:
I say 测量两次,切割一次。描述您的特定用例的使用情况。我想说的是,除了大量的数据库使用场景之外,性能不会成为问题。
原因是一旦你执行了SELECT
在该特定行上,其数据将被放置在数据库缓存中,并且立即地用于对索引进行插入检查INSERT
陈述。另请记住,此访问由索引支持,因此得出的结论是性能不会成为问题。
但是,一如既往,一定要测量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)