NewGuid ID trong SQL Server

NewGuid ID trong SQL Server là một hàm tạo ra mã số định danh không trùng duy nhất trên toàn thế giới, trong lập trình được ứng dụng rất nhiều.

  1. GUID là gì?
  2. Cách tạo GUID trong SQL Server
  3. Dùng NEWID() để tạo khóa chính
  4. Dùng NEWID() trong INSERT
  5. Sử dụng NewGuid ID trong lập trình
  6. NEWSEQUENTIALID() - GUID tăng dần

NewGuid ID trong SQL Server là một hàm tạo ra mã số định danh không trùng duy nhất trên toàn thế giới, được sử dụng để tạo ra giá trị khóa chính của 1 bảng ghi, giúp mã đó là duy nhất trong tất cả các table với nhau.

1. GUID là gì?

    GUID (Globally Unique Identifier) là một giá trị duy nhất trên toàn cầu, có dạng 128-bit (16 byte).
    Được biểu diễn dưới dạng chuỗi hexadecimal với 36 ký tự bao gồm dấu gạch ngang (-).

📌 Ví dụ một GUID:

550e8400-e29b-41d4-a716-446655440000

Mỗi GUID được tạo ra sẽ không trùng lặp, ngay cả khi được tạo trên các hệ thống khác nhau.

2. Cách tạo GUID trong SQL Server

SQL Server cung cấp hàm NEWID() để tạo một giá trị GUID ngẫu nhiên.

📌 Ví dụ:

SELECT NEWID();

🔹 Kết quả (mỗi lần chạy sẽ khác nhau):

F9E91D89-4E67-4A6D-89E2-6AC98264B5F3

3. Dùng NEWID() để tạo khóa chính

Nếu bạn muốn sử dụng GUID làm Primary Key, có thể khai báo như sau:

CREATE TABLE Customers (
    CustomerID UNIQUEIDENTIFIER DEFAULT NEWID(),
    Name NVARCHAR(100)
);

📌 Khi chèn dữ liệu mà không truyền CustomerID, SQL Server sẽ tự tạo GUID:

INSERT INTO Customers (Name) VALUES ('Nhật');
SELECT * FROM Customers;

CustomerID    Name
4C0A8F8F-9B7D-4E38-AD5E-786EC8E0D72C    Nhật

4. Dùng NEWID() trong INSERT

Nếu muốn tự tạo GUID khi chèn dữ liệu:

INSERT INTO Customers (CustomerID, Name)
VALUES (NEWID(), 'John Doe');

🔹 Ưu điểm: ✔ Đảm bảo mỗi bản ghi có một ID duy nhất.
✔ Không bị lỗi trùng lặp như IDENTITY(1,1).

🔹 Nhược điểm: ❌ Không tối ưu cho chỉ mục: Do GUID có tính ngẫu nhiên, nên khi làm Primary Key, index có thể bị phân mảnh.

💡 Giải pháp: Dùng NEWSEQUENTIALID() để giảm phân mảnh index.

5. Sử dụng NewGuid ID trong lập trình

Khai báo biến kiểu UNIQUEIDENTIFIER SQL

-- Ví dụ 1:

Declare @KEY_ UNIQUEIDENTIFIER
Set @KEY_ = NEWID()
print @KEY_


-- Ví dụ 2:

Declare @_key_sys nvarchar(50)
Set  @_key_sys=LOWER( NEWID() )
print @_key_sys


-- Nếu muốn chuyển chữ thường trong bằng hàm SQL

Không cần khai báo biến

Select LOWER( NEWID() )

 LOWER là để chuyển giá trị NewID chữ hoa thành thường

6. NEWSEQUENTIALID() - GUID tăng dần

SQL Server cũng hỗ trợ NEWSEQUENTIALID() để tạo GUID theo thứ tự tăng dần, giúp giảm phân mảnh index.

📌 Cách sử dụng:

CREATE TABLE Orders (
    OrderID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
    OrderName NVARCHAR(100)
);

📌 Lưu ý:

    NEWSEQUENTIALID() chỉ dùng được trong DEFAULT của cột, không thể gọi trực tiếp trong SELECT.

 

Tìm kiếm:

NewGuid ID trong SQL Server là một hàm tạo ra mã số định danh không trùng duy nhất trên toàn thế giới, trong lập trình được ứng dụng rất nhiều.