mysql获取最后一个自动增量值

时间:2010-03-19 21:59:31

标签: php mysql

嗨我在mySql表中有一个名为jobnumber的字段,它随每个新条目自动递增。我想要做的是当用户查看我的表单时,获取下一个'jobnumber'的值。但我想在对表格进行任何输入之前这样做。因此,当用户查看表单时,它将显示类似“这是作业号6954”的内容 我已经尝试了$rr = mysql_insert_id(),但这仅在我输入后才起作用

5 个答案:

答案 0 :(得分:1)

$ret = mysqli_query("SHOW TABLE STATUS LIKE 'table' ");
$row = mysqli_fetch_array($ret);
$Auto_increment = $row['Auto_increment'];
mysqli_free_result($ret);

答案 1 :(得分:0)

您可以尝试查询“SELECT MAX(jobNumber)FROM JobTable”;并显示该数字(加一)。只要id始终按顺序自动编号,并且没有其他人在该查询和表单提交之间执行插入,那么它应该是正确的。

答案 2 :(得分:0)

(1)您可以通过查看表中的最后一个ID并手动递增来实现(但您不确定max(id)+1是否真的是下一个id,因为最后一个数据集可能被删除,...):

mysql>  select max(id)+1 from mytable;

(2)由于MySQL不支持类似Oracle的序列,因此您也可以手动实现类似序列的操作。 MySQL提出以下建议:

mysql>  CREATE TABLE sequence (id INT NOT NULL);
mysql>  INSERT INTO sequence VALUES (0);

mysql>  UPDATE sequence SET id=LAST_INSERT_ID(id+1);
mysql>  SELECT LAST_INSERT_ID();

另请查看此link以获取更多信息。

答案 3 :(得分:0)

您的方法至少存在一些问题。首先,几乎没有可能可靠地知道这个数字。要“保留”该号码,您需要以下两个选项之一:

1:锁定所有客户的表,直到这个客户决定插入一些东西,因此能够猜出下一个自动增量(你可以猜到,非常糟糕)

2:试图通过强制临时插入来“保留”自动增加的字段(虽然这看起来更好,但不是,因为它会导致很多不可用的主键,只是坐在那里)。

选择您喜欢的其中一个,或者完全放弃这一小部分功能。

答案 4 :(得分:0)

在插入值并增加1之前,您可以在表中获得最后一个ID!