2012-09-03 139 views
0

通過可能的選擇這裏讀書#2後,我沒有看到確切的情況下,答案我在考慮...使用select LAST_INSERT_ID生成唯一的ID

案例:我有一個PHP系統自動 - 生成mysql連接的模板。

爲了使系統正常工作,我需要每個生成的模板在創建時都分配一個唯一的6位整數。 A)我可以簡單地在名爲'pageid'的數據庫中創建一個表,其中int(11)/ unique/autoincrement的起始值爲100000,然後在模板創建期間過程,只需在該表上執行一個插入操作,然後選擇'last_insert_id()'來提取最後一個值,然後在創建時將其注入到模板中? (換句話說,該表的唯一功能是生成並吐出最後一個唯一的ID)。 B)如果是這樣,是否有任何問題我應該關注使用這種方法? (除了這意味着只能生成899,999個模板的限制 - 在這種情況下這不是問題)。

讚賞任何想法或更好的方法......

回答

0
  1. 可能我只是在一個名爲「的pageid」數據庫中創建一個表,用INT(11)/獨特/自動增量與初值100000,然後在模板創建過程中,只需在此表上執行插入操作,然後選擇'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自動分配。

+0

您好,感謝的快速響應;-) – Soyo

+0

(意外按下回車鍵)...#2,它在從模板創建後的模板創建的數據庫條目一個獨特的系統 - 所以這就是爲什麼在這種情況下,單獨的表格將更適合。對於#1,因爲我以前沒有爲此使用表格,是否有一種比擁有唯一標識和任意列更好的方法,我在其中插入任意數據,僅用於+ 1'自動遞增?謝謝 – Soyo

+0

@Soyo:你不需要一個任意的列:使用我上面的例子,你所需要做的就是'INSERT INTO頁VALUES(NULL)'。 – eggyal