[英]Using select last_insert_id to generate unique ids
在閱讀完Stackoverflow上的可能選項后,我沒有看到我正在考慮的確切情況的答案...
案例:我有一個自動生成mysql連接模板的php系統。
為了使系統正常工作,我需要為每個生成的模板在創建時分配一個唯一的6位整數。 而不是弄亂隨機發生器,等等。
A)我可以簡單地在數據庫中創建一個名為'pageid'的表,並以int(11)/ unique / autoincrement為起始值100000,然后在模板創建過程中,僅對此表執行插入操作,然后執行一個'選擇last_insert_id()'來獲取最后一個值,然后將其在創建時注入到模板中? (換句話說,表的唯一功能是生成並吐出最后一個唯一ID)。
B)如果是這樣,使用此方法是否應該考慮任何問題? (除了這意味着只能生成899,999個模板的限制,在這種情況下這不是問題)。
任何想法或更好的方法表示贊賞...
我可以簡單地在數據庫中創建一個名為'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字節的存儲空間,並具有更適合您需要的顯示寬度。
如果是,使用此方法是否應該考慮任何問題? (除了這意味着只能生成899,999個模板的限制,在這種情況下這不是問題)。
相反,您可以僅在templates
表中具有該列,並在插入新記錄時自動分配id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.