Trong MariaDB, UUID()
là một hàm tích hợp trả về Mã nhận dạng duy nhất toàn cầu (UUID).
UUID được tạo theo “DCE 1.1:Lệnh gọi thủ tục từ xa” (Phụ lục A) Đặc điểm kỹ thuật CAE (Môi trường ứng dụng chung) do The Open Group xuất bản vào tháng 10 năm 1997 (Số tài liệu C706).
Cú pháp
Cú pháp như sau:
UUID()
Vì vậy, không cần đối số (hoặc được chấp nhận).
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT UUID();
Kết quả:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Nếu tôi gọi nó vào lần khác, tôi nhận được một giá trị khác:
SELECT UUID();
Kết quả:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Giới thiệu về UUID
UUID (Số nhận dạng duy nhất toàn cầu) là một số được thiết kế để duy nhất trên toàn cầu theo không gian và thời gian. Hai cuộc gọi đến UUID()
dự kiến sẽ tạo ra hai giá trị khác nhau, ngay cả khi các lệnh gọi này được thực hiện trên hai máy tính riêng biệt không được kết nối với nhau.
UUID là một số 128 bit được biểu thị bằng một chuỗi utf8 gồm năm số thập lục phân trong aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
định dạng:
- Ba số đầu tiên được tạo từ một dấu thời gian.
- Số thứ tư duy trì tính duy nhất theo thời gian trong trường hợp giá trị dấu thời gian mất tính đơn điệu (ví dụ:do tiết kiệm ánh sáng ban ngày).
- Số thứ năm là số nút IEEE 802 cung cấp tính duy nhất về không gian. Một số ngẫu nhiên được thay thế nếu số thứ hai không có sẵn. Trong những trường hợp như vậy, tính duy nhất về không gian không thể được đảm bảo. Phải nói rằng, một vụ va chạm phải là một sự kiện có xác suất cực kỳ thấp.
Lưu ý rằng các câu lệnh sử dụng UUID()
chức năng không an toàn để sao chép dựa trên câu lệnh.
So với SYS_GUID()
Chức năng
Kết quả được trả về bởi UUID()
tương tự như trả về bởi SYS_GUID()
, ngoại trừ SYS_GUID()
không bao gồm ký hiệu gạch nối (-
) trong kết quả (trong khi, UUID()
hiện).
Dưới đây là so sánh giữa hai loại:
SELECT
UUID(),
SYS_GUID();
Kết quả:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
SYS_GUID()
đã được giới thiệu trong MariaDB 10.6.1 để nâng cao khả năng tương thích với Oracle.
Ngoài ra còn có một UUID_SHORT()
hàm trả về một UUID ngắn dưới dạng số nguyên không dấu 64 bit.
Thông qua đối số
Như đã đề cập, UUID()
không chấp nhận bất kỳ đối số nào. Đây là những gì sẽ xảy ra khi tôi chuyển một đối số:
SELECT UUID(3);
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'