【发布时间】:2021-06-29 23:07:46
【问题描述】:
当我通过 PHP 在我的数据库中插入数据时,我正在尝试生成交易编号。 我想生成序列事务 id,以便执行以下 SQL。 我正在计算 ID 列并为新插入添加 +1 值。 但是当我有一个批量插入时,它不会在单个条目之后显示不同的事务 ID。
我希望ALFABHETs 始终保持不变,之后数字将不断运行。
如果达到这个数字,它会自动变成3到4位数字。
例如,数字将从 MG001 开始。如果是MG999,则变为MG1000、MG1001、MG1002等
#table_name: table1
ID | transactionID
------------------
1 | MG001
2 | MG001
3 | MG003
4 | MG004
5 | MG004
6 | MG001
$stmt = $con->prepare("SELECT * FROM `table1` ORDER BY `ID` DESC LIMIT 1");
$stmt->execute();
if ($stmt->rowCount() > 0) {
while ($data = $stmt->fetch()) {
$transactionCode = 'MG' . $data['ID'] + 1;
}
} else {
$transactionCode = 'MG001' . '1';
}
【问题讨论】:
-
我不明白你的问题。您根据数据库中的
ID计算$transactionCode,为什么这会对批量插入造成问题?我假设ID是您的AUTO_INCREMENT 索引? -
这看起来很容易出现race conditions。如果你同时收到两个请求,理论上这两个请求可以获得相同的事务 id。
标签: php transactions auto-generate