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 [ ]
我的工厂(我指的是我工作的地方)的机器上运行的应用程序有问题。
无论如何,该应用程序都会为包裹创建唯一编号,这些包裹与装载它们的唯一箱号相关联。因此,它们应该始终是唯一的数字。
现在在报告文件中看到2个箱号相同,里面的元件。这意味着 2 个数字从生成报告的位置加载到数据库 table。
现在是编码部分 该应用程序的程序员想通过使用
来解决这个问题SELECT DISTINCT sql 命令
从数据库生成文件,这样它就永远只写一个版本的双注册号。 (这是因为我们不知道这个数字是如何被两次放入数据库的)我不想要这个解决方案,因为它只治疗一个已知的症状而不是原因。可能还有其他我们不知道的影响。
我建议他们使用
在不存在的地方插入 sql 命令
这样就永远不会注册相同的项目。
现在他们 return 对我说那个条件已经存在了....?我不明白这可能吗?
我唯一能想到的场景是,他们执行INSERT WHERE NOT EXISTS的不仅仅是数字的字段,而是字段的组合。
命令是否可能以其他方式失败?我无权访问代码,所以我不能举一个例子,但我的问题是一个具体的问题。我不想被他们拖累所以这就是我问你们的原因。
这似乎是一个并发问题。
声明
insert into [] where not exists []
可以同时提交两次,运行可以并行提交。两个语句都检查它们的条件,然后都插入。这可能会因长时间的 运行ning 交易而更加暴露。
要发现错误(某事 将 在某处失败)实际上是告诉数据库这个值是唯一的。首先,您当然必须删除重复项,然后您可以使用 a
create unique index on [ ]