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 có kiểu dữ liệu , như một cái nhìn nhanh vào Object Explorer cho thấy: