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

Làm cách nào để thay đổi cột không nhận dạng có lập trình thành cột nhận dạng?

Theo như tôi biết, bạn phải tạo một bảng tạm thời với trường ID được tạo là IDENTITY, sau đó sao chép tất cả dữ liệu từ bảng gốc. Cuối cùng, bạn thả bảng gốc và đổi tên bảng tạm thời. Đây là một ví dụ với một bảng (có tên là TestTable ) chỉ chứa một trường, được gọi là ID (số nguyên, không phải IDENTITY):

BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_TestTable
    (
    ID int NOT NULL IDENTITY (1, 1)
    )  ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable ON
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
     EXEC('INSERT INTO dbo.Tmp_TestTable (ID)
        SELECT ID FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable OFF
GO
DROP TABLE dbo.TestTable
GO
EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT' 
GO
COMMIT


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi từ UniqueIdentifier thành BigInt và Back?

  2. Làm thế nào để sử dụng TimeZoneInfo trong hội SQLCLR trong SQL Server 2012

  3. Làm cách nào để so sánh 2 hàng từ cùng một bảng (SQL Server)?

  4. Bảng chú giải thuật ngữ truy vấn SQL Server - A Stick Shift cho DBA

  5. Cú pháp không chính xác gần ')' gọi thủ tục được lưu trữ với GETDATE