2011-03-19 67 views
1

對於我表中的每條記錄,都有一個ID,然後是Public_ID。將mysql主鍵複製爲等效MD5

該ID是一個自動遞增的int。 Public_ID是ID中INT的MD5散列。

要生成此Public_ID,我通常會得到與ID值相匹配的插入ID,然後生成Public_ID並更新ID與插入ID匹配的記錄。

是否有一種更有效的方式來生成Public_ID而無需在插入後進行計數或更新?

謝謝, 彼得

回答

1

如果您打算使用MD5來散列ID,那麼您可能會生成GUID

+0

這聽起來像是一個更有前途的解決方案。謝謝! – Peter 2011-03-19 02:10:02

+0

這給我留下了另一個問題,但是......在大規模php,mysql應用程序中可以處理任何給定表中的數百萬條記錄的最有效的GUID方法生成是什麼? – Peter 2011-03-19 02:13:04

+0

'uniqid'應該足夠好。 [見此](http://stackoverflow.com/questions/1449490/)。 – Haochi 2011-03-19 04:05:26

2

肯定有。散列除ID之外的任何內容以獲取Public_ID。您可以使用當前時間戳,表格中的其他列,環境數據或這些的任意組合。

+0

這很有意義。謝謝! – Peter 2011-03-19 02:12:01

2

Generall後才完成插入插入行的ID是不可用的,這意味着你不能做:

插入到表(PK,哈希)值(NULL,LAST_INSERT_ID()) ;

您將獲得在此之前執行的任何插入的ID,而不是當前插入的ID。同樣,你不能使用觸發器來捕捉它並更新表格,因爲觸發器不能更改新行。

所以,看起來像你堅持插入/取/更新週期。

+0

你完全正確的。但是使用合適的md5哈希似乎不是必需的。 – Peter 2011-03-19 02:15:16