0

我需要为表 A 中的每条记录生成一个代码。代码是根据表中存在的行数生成的。

因此,如果表 A 有 5 条记录,则代码应类似于 C006。如果有 6 条记录,则代码应为 C007 等。

我生成的代码没有问题,除了如果请求是由两个或更多用户同时完成的,那么生成的代码是相同的,因为在事务开始时,有 5 行,所以两个进程都生成 C006 . 我通过创建唯一索引解决了这个问题。因此,如果发生这种情况,一个人可以保存记录,而另一个用户将收到代码不唯一的错误。

现在,我担心的是:当一百或更多用户提出相同的请求时会发生什么?用户是否需要继续发出请求,直到代码唯一并保存记录?如果发生这种情况,如何避免这种情况,以便为每个请求生成并保存一个唯一的顺序代码?

顺便说一句,我正在使用 Yii,显然无法锁定表,因为 Yii 使用 t 作为默认表别名,当我尝试锁定表时,我需要指定一个唯一别名。

4

0 回答 0