Bạn không thể thay đổi các cột hiện có cho danh tính.
Bạn có 2 lựa chọn,
-
Tạo bảng mới với danh tính và bỏ bảng hiện có
-
Tạo một cột mới với danh tính và bỏ cột hiện có
Phương pháp tiếp cận 1. ( Bảng mới ) Tại đây bạn có thể giữ lại các giá trị dữ liệu hiện có trên cột nhận dạng mới được tạo. Lưu ý rằng bạn sẽ mất tất cả dữ liệu nếu "nếu không tồn tại" không được thỏa mãn, vì vậy hãy đảm bảo rằng bạn cũng đặt điều kiện từ bỏ!
CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'
Phương pháp tiếp cận 2 ( Cột mới ) Bạn không thể giữ lại các giá trị dữ liệu hiện có trên cột nhận dạng mới được tạo, Cột nhận dạng sẽ chứa chuỗi số.
Alter Table Names
Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'
Xem bài đăng sau trên Diễn đàn Microsoft SQL Server để biết thêm chi tiết:
Cách thay đổi cột thành danh tính (1,1)