SQL 命令 insert where not exists 允许在数据库中存储 2 个相同的记录

SQL command insert where not exists allows 2 identical records to be stored in database

我的工厂(我指的是我工作的地方)的机器上运行的应用程序有问题。

无论如何,该应用程序都会为包裹创建唯一编号,这些包裹与装载它们的唯一箱号相关联。因此,它们应该始终是唯一的数字。

现在在报告文件中看到2个箱号相同,里面的元件。这意味着 2 个数字从生成报告的位置加载到数据库 table。

现在是编码部分 该应用程序的程序员想通过使用

来解决这个问题

SELECT DISTINCT sql 命令

从数据库生成文件,这样它就永远只写一个版本的双注册号。 (这是因为我们不知道这个数字是如何被两次放入数据库的)我不想要这个解决方案,因为它只治疗一个已知的症状而不是原因。可能还有其他我们不知道的影响。

我建议他们使用

在不存在的地方插入 sql 命令

这样就永远不会注册相同的项目。

现在他们 return 对我说那个条件已经存在了....?我不明白这可能吗?

我唯一能想到的场景是,他们执行INSERT WHERE NOT EXISTS的不仅仅是数字的字段,而是字段的组合。

命令是否可能以其他方式失败?我无权访问代码,所以我不能举一个例子,但我的问题是一个具体的问题。我不想被他们拖累所以这就是我问你们的原因。

这似乎是一个并发问题。

声明

insert into [] where not exists []

可以同时提交两次,运行可以并行提交。两个语句都检查它们的条件,然后都插入。这可能会因长时间的 运行ning 交易而更加暴露。

要发现错误(某事 在某处失败)实际上是告诉数据库这个值是唯一的。首先,您当然必须删除重复项,然后您可以使用 a

create unique index on [ ]