我注意到在测试期间,如果有人在我发出nextId()时插入了一条记录,数据库将跳转索引中的数字。发出此命令会保留下一个ID吗?
示例:
用户1:
$nextId = $db->nextId('id');
echo "Next id: ".$nextId."<br />";
结果:1234,但没有插入,因为我刚刚获得nextId()
用户2 :(恰好在用户1之后)
$rs = $db->query(INSERT NEW RECORD HERE...);
id = 1235,插入新记录
现在我手动查询数据库,我看到记录ID 1233和1235,但是我在DB中缺少我执行nextId()的1234。
这是预期的结果吗?
答案 0 :(得分:1)
这是预期的结果吗?
是。这是预期的行为。
这样做的原因是它允许您使用该ID,而不必担心外部客户端执行的其他插入可能会被分配该ID,从而阻止您使用它。
来自manual:
从中返回下一个可用的数字 一个序列。顺序是 每次自动递增 这个方法叫做。