2

我的应用程序遇到问题。我有一个表,其中一个字段名称是registration_no。在插入新记录之前,我将registration_no 字段增加1,然后在该表中插入增加的registration_no。问题是当一些用户同时插入数据时,一些 registration_no 值是相同的。我该如何防止这种情况。

4

2 回答 2

2

你想使用一个序列

两个警告:

  • 文章中描述的AUTO_INCREMENT功能是非标准的,并且在移动到不同的数据库时可能会出现可移植性问题。

  • 如果 anINSERT被中止,则序列中的一个数字仍然被消耗,因此您最终可能会在序列中出现漏洞。如果这是不可接受的,请对主(代理)键使用自动生成的序列,并将该键的单独映射添加到“官方”序列号,从而在该表的索引中强制执行唯一性。

另一种方法是在数据库中强制执行UNIQUE,使用适当的TRANSACTION ISOLATION LEVEL并添加应用程序逻辑来处理故障INSERT

于 2013-09-03T18:02:37.477 回答
0

您可以让数据库registration_no为您设置,而不是在代码中执行此操作。您可以获得registration_no插入语句的结果,这将解决您的并发问题。

alter table myTable modify column registration_no int auto_increment

您的查询结果将是记录的索引。IF registration_no不是您需要registration_no根据返回的索引 id 查询自动生成的索引。

于 2013-09-03T17:58:18.853 回答