Lệnh DBCC CHECKIDENT
quản lý được sử dụng để thiết lập lại bộ đếm danh tính. Cú pháp lệnh là:
DBCC CHECKIDENT (table_name [, { NORESEED | { RESEED [, new_reseed_value ]}}])
[ WITH NO_INFOMSGS ]
Thí dụ:
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);
GO
Nó không được hỗ trợ trong các phiên bản trước của Cơ sở dữ liệu Azure SQL, nhưng hiện được hỗ trợ.
Xin lưu ý rằng new_reseed_value
đối số được thay đổi trên các phiên bản SQL Server theo tài liệu :
Nếu các hàng có mặt trong bảng, hàng tiếp theo được chèn với giá trị new_reseed_value . Trong phiên bản SQL Server 2008 R2 trở về trước, hàng tiếp theo được chèn sử dụng new_reseed_value + giá trị gia tăng hiện tại.
Tuy nhiên, tôi thấy thông tin này sai lệch (thực sự sai) vì hành vi được quan sát chỉ ra rằng ít nhất SQL Server 2012 vẫn sử dụng new_reseed_value + logic giá trị gia tăng hiện tại. Microsoft thậm chí còn mâu thuẫn với chính nó Example C
được tìm thấy trên cùng một trang:
C. Buộc giá trị nhận dạng hiện tại thành một giá trị mới
Ví dụ sau đây buộc giá trị nhận dạng hiện tại trong cột addressTypeID trong bảng addressType thành giá trị 10. Vì bảng có các hàng hiện có, hàng tiếp theo được chèn sẽ sử dụng 11 làm giá trị, nghĩa là giá trị gia tăng hiện tại mới được xác định cho giá trị cột cộng 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Tuy nhiên, tất cả điều này để lại một tùy chọn cho hành vi khác nhau trên các phiên bản SQL Server mới hơn. Tôi đoán cách duy nhất để chắc chắn, cho đến khi Microsoft làm rõ mọi thứ trong tài liệu của riêng mình, là thực hiện các thử nghiệm thực tế trước khi sử dụng.