Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengubah kolom non-identitas secara terprogram menjadi identitas?

Sejauh yang saya tahu, Anda harus membuat tabel sementara dengan bidang ID dibuat sebagai IDENTITAS, lalu salin semua data dari tabel asli. Akhirnya, Anda menjatuhkan tabel asli dan mengganti nama tabel sementara. Ini adalah contoh dengan tabel (bernama TestTable ) yang hanya berisi satu bidang, yang disebut ID (bilangan bulat, bukan IDENTITAS):

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. Cara Membuat Tabel dengan Batasan Kunci Asing di SQL Server - Tutorial SQL Server / TSQL Bagian 66

  2. SQL Server:sys.master_files vs. sys.database_files

  3. Buat Kueri Pohon Dari Tabel Pemetaan Numerik di SQL (Dengan Bidang Pemisah)

  4. Pola regex di dalam fungsi Ganti SQL?

  5. Apa cara terbaik untuk menyisipkan basis data massal dari c #?