0

我正在接受最大发票号。从一个表中增加 1 并用增加的值更新同一个表,问题是多个用户正在执行此操作,因此有时它会错过序列,有时会为不同的作业生成相同的序列。我不能让发票没有唯一的字段,因为其他工作它是 0。代码就像。

$res=mysql_query("select max(invoice_no) from complaints_master");
$result=mysql_fetch_array($res);
$code_id=$result[0]+1;
// update invoice details in complaint master
$usr="update complaints_master set invoice_no='$code_id', invoice_flag='1', invoice_date='$today', invoice_total_amt='$_POST[final_total]' where job_no='$_REQUEST[job_no]'";
4

1 回答 1

0

您需要设置事务级别以SERIALIZABLE确保每个都MAX(invoice_no)+1向客户端返回唯一值。不确定在使用 PHP 时如何做到这一点,但这里是 MySQL 文档:MySQL SET TRANSACTION Syntax

于 2013-05-02T18:41:35.970 回答