Không, không thể có PHP tạo chính xác UUID()
làm MySQL vì đó là số ngẫu nhiên (hoàn toàn).
Có vẻ như vấn đề của bạn là bạn thích sử dụng UUID()
trong MySQL nhưng không muốn thực hiện truy vấn bổ sung để tìm ra những gì mới UUID
là.
Vậy tại sao PHP không tạo UUID
để được sử dụng làm khóa chính trong truy vấn INSERT
?? This comment on php.net sẽ cho bạn biết cách thực hiện điều này.
Sử dụng những chức năng mẫu:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
Sửa: Có nhiều phương pháp trên trang đó mà tạo ra các loại khác nhau của UUID
s. v4
là giả ngẫu nhiên, nhưng bạn có thể sử dụng một phiên bản khác hoặc tạo máy phát điện UUID
của riêng bạn.
Nguồn
2012-02-21 16:12:00
Hmm, sử dụng phương pháp này, tôi phải kiểm tra xem đó có phải là uuid duy nhất trong MySQL hay không và nếu nó là duy nhất trên các máy chủ. Có vẻ như cần thêm một lần kiểm tra độc đáo hoặc kéo dữ liệu theo từng cách? – ina
Nếu bạn sử dụng UUID được tạo ngẫu nhiên, bạn sẽ không gặp phải vấn đề này. Theo thống kê, nếu bạn tạo ** 1 tỷ ** UUID ** mỗi giây trong 100 năm **, thì chỉ có 50% cơ hội ** chỉ một ** trong số đó sẽ va chạm. (Nguồn: http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates) Mặc dù bạn có thể sẽ không bao giờ nhìn thấy một vụ va chạm, nó vẫn sẽ là thông minh để làm cho UUID là khóa chính trong MySQL và đồng bộ hóa các máy chủ thường xuyên. –