Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để tự động tạo id duy nhất trong SQL như UID12345678?

Giải pháp khả thi duy nhất theo ý kiến ​​của tôi là sử dụng

  • một ID INT IDENTITY(1,1) để SQL Server xử lý việc tăng tự động giá trị số của bạn
  • một được tính toán, tồn tại để chuyển đổi giá trị số đó thành giá trị bạn cần

Vì vậy, hãy thử điều này:

CREATE TABLE dbo.tblUsers
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
   .... your other columns here....
  )

Bây giờ, mỗi khi bạn chèn một hàng vào tblUsers mà không chỉ định giá trị cho ID hoặc UserID :

INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

thì SQL Server sẽ tự động và an toàn tăng ID của bạn giá trị và UserID sẽ chứa các giá trị như UID00000001 , UID00000002 , ...... và v.v. - tự động, an toàn, đáng tin cậy, không có bản sao.

Cập nhật: cột UserID được tính toán - nhưng nó vẫn là CỦA KHÓA HỌC kiểu dữ liệu , như một cái nhìn nhanh vào Object Explorer cho thấy:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 Phương pháp hay nhất về chỉ mục SQL Server để cải thiện hiệu suất

  2. Các bản sửa lỗi cho sự cố tạo lại chỉ mục trực tuyến SQL Server 2012 &2014

  3. Cách sử dụng SQL Server HierarchyID thông qua các ví dụ đơn giản

  4. Hợp nhất phiên bản SQL Server bằng cách phân cụm và xếp chồng

  5. Cách chọn một số ký tự nhất định từ bên trái hoặc bên phải của chuỗi trong SQL Server