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

Làm cách nào để gieo lại danh tính bảng trong SQL Server 2008 và hoàn tác tất cả một cách an toàn?

Lệnh để đặt lại thuộc tính nhận dạng là

DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)

Khi bạn muốn đặt danh tính cột thành 12345, bạn chạy điều này

DBCC CHECKIDENT (beer, RESEED, 12345)

Khi bạn muốn xóa các hàng kiểm tra và khôi phục giá trị về giá trị trước đó, bạn thực hiện như sau.

DELETE
FROM beer
WHERE beer_id >= 12345 ;

DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, @NewSeed)

Đây là một minh chứng cho kịch bản của bạn. Lưu ý rằng cột beer_id được tạo bằng IDENTITY (1, 1) thuộc tính, đặt danh tính thành 1 với gia số là 1.

CREATE TABLE beer
    (        
    beer_id NUMERIC(10) IDENTITY (1,1) NOT NULL,
    mnemonic NVARCHAR(8)
    );

GO

INSERT INTO beer(mnemonic) VALUES ('Beer 1')
INSERT INTO beer(mnemonic) VALUES ('Beer 2')

SELECT *
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, 12345)
GO

INSERT INTO beer(mnemonic) VALUES ('Beer 3')
INSERT INTO beer(mnemonic) VALUES ('Beer 4')

SELECT *
FROM beer ;

DELETE
FROM beer
WHERE beer_id >= 12345 ;

DECLARE @NewSeed NUMERIC(10)
SELECT @NewSeed = MAX(beer_id)
FROM beer ;

DBCC CHECKIDENT (beer, RESEED, @NewSeed)
GO

INSERT INTO beer(mnemonic) VALUES ('Beer 5')
INSERT INTO beer(mnemonic) VALUES ('Beer 6')

SELECT *
FROM beer ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi ngôn ngữ mặc định của đăng nhập trong SQL Server

  2. Hàm giống QUALIFY trong SQL Server

  3. Sql Server 2008 NVARCHAR độ dài -1

  4. Công cụ quản lý SQL Server 2017

  5. Làm cách nào để xác định trong SQL Server nếu một phạm vi dateTime chồng lên một phạm vi khác