我有一张偶尔更新的表格。 ID列是'auto_increment'。 对于每个请求,我想知道最高ID号是什么。
保存最新ID的最佳方法是什么? 是否可以定义一个全局变量来坚持所有脚本运行?
答案 0 :(得分:2)
SELECT max(id) FROM `table` WHERE 1
您需要确保在此值中添加一个,因为这将代表最新添加的行。
回答新编辑的问题:
保存最新ID的最佳方法是不做任何事情。不要将id字段作为插入的一部分包含在内,mysql将正确处理它。它将创建行并为其提供下一个自动递增的int。如果您想知道刚输入的内容,可以运行mysqli_insert_id以获取最新插入数据库的ID。 (假设有php的mysqli驱动程序,你没有提到一种语言,所以我猜对了,其他语言/驱动程序支持类似的功能)。这会回答你的问题吗?
答案 1 :(得分:1)
如果要将数据存储在内存中以便有效访问,可以将memcached与MemCache或MemCached PHP扩展一起使用:
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set('last_id', $last_id); // Store the id in memory with no expiration
每当最后一个id改变时,只需再次设置它。要从记忆中获取id,你可以这样做:
$memcache->get('last_id');
如果$ memcache-> get返回false,那么你的缓存会以某种方式丢失,所以你需要再次从数据库中取出last_id并设置它。
请注意(出于效率原因)您不希望每次使用Memcache时都实例化新的Memcache连接,因此要么使用某种Singleton模式,要么更优选使用依赖注入。
答案 2 :(得分:0)
SHOW TABLE STATUS LIKE 'table'
然后在插入
之前读取Auto_increment列 如果在插入后阅读或mysqli_insert_id