我们有一台运行PHP 5.6.7的服务器,mariadb 10.0.17-MariaDB。
我们有一个CodeIgniter应用程序,其中有两个表:
与point_trigger
相关联的trigger_filter
和point_trigger_id
,一对多。两者都将id
列设置为带AUTO_INCREMENT
的整数(因此没有复合键)。这就是他所说的:
客户端通过Web界面删除了point_trigger
之一。 Sa基本上称为控制器,然后从point_trigger
删除行trigger_filter
并从/delete/235
删除一行(在这种情况下只有一行)。记录了呼叫,它以point_trigger_id
结束,这意味着用于查找要删除的行的235
设置为point_trigger
。到目前为止一切顺利。
几天后,客户再次访问网络界面并添加新的point_trigger
。
客户端调用,因为他创建的点触发器意外行为。
我们检查数据库,并且point_trigger
表 NOT 在ID中有差距,这意味着用户创建的235
具有< strong>相同的ID ,即trigger_filter
。我们检查了关联的point_trigger
表,而且没有差距,此表的自动增量ID就是下一个。
我们知道(或者我们知道我们知道)的是,删除和添加在删除行方面都没问题。我们认为,因为删除前一个客户端后创建的point_trigger
具有不同的参数,并且在删除和添加之前没有记录任何编辑。
所以有一些东西使得AUTO_INCREMENT在删除和添加select t.value
from table t
where t.amount <= 5
order by t.amount desc
limit 1;
之间的时间内重新计算。任何人都可以告诉我们或者只是指出它可能是什么?
提前致谢!
答案 0 :(得分:0)
用户创建的具有相同的ID,即235
这可能是一系列事件吗?
详细说明第5步:
AUTO_INCREMENT
分配的ID 抱歉,但这就是它的工作方式。 AUTO_INCREMENT
可以随时保证唯一性,而不是始终保持唯一性。