我正在重构企业应用程序的数据导入过程,并遇到了一个片段,我想找到一个更好的解决方案。导入数据时,我们必须为每个数据集创建一个唯一实体,并且在字段中有一个计数器用于按顺序分配此 ID。您阅读该字段以获取下一个空闲 ID,然后将其递增以准备下一次。
目前,这是在原始应用程序中分两步完成的,用“C”编写:
SELECT idnext FROM mytable;
UPDATE mytable SET idnext = idnext + 1;
如果多个进程做同样的事情,显然这里存在竞争条件。
编辑:重要的并存条件:我无法触及数据库/字段定义,这排除了序列。
我们正在用 perl 重写,我想做同样的事情,但更好。原子解决方案会很好。不幸的是,我的 SQL 技能有限,所以我求助于集体智慧 :-)