使用select last_insert_id生成唯一ID

时间:2012-09-03 23:01:50

标签: php mysql last-insert-id

在阅读Stackoverflow上的可能选项之后,我没有看到我正在考虑的确切案例的答案......

CASE:我有一个自动生成mysql连接模板的php系统。

为了使系统工作,我需要每个生成的模板在创建时分配一个唯一的6位整数。而不是乱搞随机发生器等...

A)我可以简单地在数据库中创建一个名为'pageid'的表,使用int(11)/ unique / autoincrement,起始值为100000,然后在模板创建过程中,只需在此表上执行插入操作,然后'select last_insert_id()'来拉取最后一个值,然后在创建模板时将其注入模板中? (换句话说,表的唯一功能是生成并吐出最后一个唯一ID。)

B)如果是这样,我应该关注使用这种方法的问题吗? (除了这意味着只能生成899,999个模板的限制 - 在这种情况下这不是问题)。

任何想法或更好的方法都赞赏...

1 个答案:

答案 0 :(得分:0)

  1.   

    我可以简单地在数据库中创建一个名为'pageid'的表,使用int(11)/ unique / autoincrement,起始值为100000,然后在模板创建过程中,只需在此表上执行插入,然后执行'select last_insert_id()'拉取最后一个值,然后在创建时将其注入模板中? (换句话说,表的唯一功能是生成并吐出最后一个唯一ID。)

    是:

    CREATE TABLE pages (
      pageid MEDIUMINT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY
    ) AUTO_INCREMENT = 100000;
    

    请注意,我使用的是MEDIUMINT(6),因为它需要比INT少1个字节的存储空间,并且根据您的需要提供更合适的显示宽度。

  2.   

    如果是这样,我是否应该关注使用此方法? (除了这意味着只能生成899,999个模板的限制 - 在这种情况下这不是问题)。

    您只需在templates表中添加该列,并在插入新记录时自动分配id