您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

UNIQUE约束与INSERT之前的检查

UNIQUE约束与INSERT之前的检查

我认为在大多数情况下,两者之间的差异会很小,因此选择主要应通过选择最终对于第一次看代码的人来说最容易理解的实现来驱动。

但是,我认为异常处理有一些 优点:

异常处理避免了潜在的竞争状况。如果另一个过程在您的支票和插入内容之间插入了一条记录,则“检查然后插入”方法可能会失败。因此,即使您正在执行“先检查后插入”操作,您仍然希望对插入进行异常处理,并且如果您已经在进行异常处理,那么您也可以取消初始检查。

如果您的代码不是存储过程,并且必须通过网络与数据库进行交互(即应用程序和数据库不在同一个盒子上),那么您要避免进行两个单独的网络调用一个用于检查,另一个用于数据库调用)。其他)(通过插入操作),并通过异常处理来实现,这提供了一种通过单个网络调用处理整个事件的简单方法。现在,有很多方法可以执行“检查然后插入”方法,同时又避免了第二次网络调用,但是仅捕获异常可能是解决该问题的最简单方法

另一方面,异常处理需要一个唯一的约束(实际上是一个唯一的索引),这需要进行性能折衷:

我还要注意,如果您实际要执行的操作是“更新其他插入”(即,如果具有唯一值的记录已经存在,则您想更新该记录,否则插入一个新的记录)记录),那么您实际要使用的是特定数据库的UPSERT方法(如果有)。对于sqlServer和Oracle,这将是MERGE语句。

SQL 2022/1/1 18:37:28 有433人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶