Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да промените програмно колона без идентичност на колона с идентичност?

Доколкото знам, трябва да създадете временна таблица с ID поле, създадено като IDENTITY, след което да копирате всички данни от оригиналната таблица. Накрая премахвате оригиналната таблица и преименувате временната. Това е пример с таблица (на име TestTable ), което съдържа само едно поле, наречено ID (цяло число, не 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. 7645 Нулев или празен предикат на пълен текст

  2. Премахнете числата от string sql сървъра

  3. Вмъкване на редове в таблица само с една колона IDENTITY

  4. Възможно ли е да се изпълняват множество DDL изрази в транзакция (в рамките на SQL Server)?

  5. Обединени колони вертикално в SQL