我想知道是否这是一个好的想法捕例外的基础上独特的索引的sql。

我想要抓住一个异常喜欢'重复的项目1-0'如果是这样,那么处理异常否则插入适当的数据库表?

有帮助吗?

解决方案

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

  • 错误信息是有点不清楚: 错误1062(23000):重复的项目"xxx"关键1.你总是100%确定其关键是1?
  • 它锁定你到一个特定的供应商数据库

我觉得简单 事务:

  • 检查行的存在;
  • 扔一个例外,如果该行已经存在;
  • 插入新行。

性能的问题:

我说 量两次切一次.配置文件的使用情况的具体使用情况。我的头顶我会说性能不会是一个问题,除了重db的使用情况。

其原因是,一旦你执行 SELECT 在具体行,其数据将被放置在缓存文件和数据库 立即 用于插入检查完成指数 INSERT 发言。还铭记这一访问的是支持由一个索引导出的结论性能不会是一个问题。

但是,一如既往,做的措施。

其他提示

我不明白为什么不。它可能比在插入之前运行查询更有效。但是,捕获异常的错误代码可能更好,而不是识别错误消息。

您可以使用REPLACE命令。它根据记录的存在插入/更新。它的原子也是查询然后插入/更新不是。这取决于您在检测到密钥违规时想要做什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top