我是僅僅有MySQL的通過UUID()
生成主鍵將使鍵唯一跨服務器的印象,等MySQL UUID主鍵 - 由PHP或MySQL生成?
但是,there is no way to fetch the last inserted UUID,這需要一個額外的select語句每次我插入的時間內完成下。
是否有可能讓PHP產生與MySQL相同的UUID()
?
我是僅僅有MySQL的通過UUID()
生成主鍵將使鍵唯一跨服務器的印象,等MySQL UUID主鍵 - 由PHP或MySQL生成?
但是,there is no way to fetch the last inserted UUID,這需要一個額外的select語句每次我插入的時間內完成下。
是否有可能讓PHP產生與MySQL相同的UUID()
?
不,不可能讓PHP生成與MySQL完全相同的UUID()
,因爲它是一個(完全)隨機數。
聽起來像你的問題是,你喜歡在MySQL中使用UUID()
,但不想執行額外的查詢來找出新的UUID
是什麼。
那麼爲什麼不讓PHP創建UUID
作爲INSERT
查詢中的主鍵? This comment on php.net應該告訴你如何做到這一點。
使用這些樣本功能:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
編輯:有頁面上幾種方法能產生不同類型的UUID
秒。 v4
是僞隨機的,但您可以使用不同的版本或創建自己的UUID
生成器。
我試過第一步:$ uuid = UUID :: v4();但它掛起了我的服務器,所以我想到了另一個想法,我試着如下:
從查詢獲取數據$ sql1 = SELECT UUID()AS uuid; 然後在變量$ UUID存儲
,然後使用下面
$ SQL = 「INSERT INTO MYTABLE(UUID,FOO)VALUES( '{$ UUID}', '酒吧');」; echo「UUID是:」。 $ UUID;
嗯,使用這種方法,我不得不檢查它是否是MySQL中唯一的uuid,以及它是否是跨服務器唯一的。似乎每種方式都需要額外的檢查獨特或數據拉取? – ina 2012-02-24 03:19:36
如果使用隨機生成的UUID,則不會出現此問題。根據統計,如果您在100年內每秒產生** 10億** UUID ** **,**只有一個**會有50%的機會發生碰撞。 (來源:http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates)儘管你可能永遠不會看到衝突,但將UUID作爲MySQL主鍵並定期同步服務器仍然很明智。 – 2012-02-24 14:32:50