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

Заменете колоната за самоличност от int на bigint

Е, няма да е бърз и лесен начин да направите това, наистина....

Моят подход би бил следният:

  1. създайте нова таблица с идентична структура - с изключение на ID колоната е BIGINT IDENTITY вместо INT IDENTITY

    ----[ поставете вашия сървър в изключителен режим за един потребител тук; потребителят не може да използва вашия сървър от този момент нататък ]----

  2. намерете и деактивирайте всички ограничения на външния ключ, препращащи към вашата таблица

  3. включете SET IDENTITY_INSERT (your new table) ON

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

  5. изключете SET IDENTITY_INSERT (your new table) OFF

  6. изтрийте старата си таблица

  7. преименувайте новата си таблица на старото име на таблица

  8. актуализирайте всички таблици, които имат FK препратка към вашата таблица, за да използват BIGINT вместо INT (това трябва да е възможно с прост ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. създайте отново всички релации с външен ключ

  10. сега можете отново да върнете сървъра си към нормално многопотребителско използване



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изявление на SQL CASE

  2. Грешка 101 „Запитването не е позволено в изчакване“ в SQL Server

  3. Как работи функцията CHARINDEX() в SQL Server (T-SQL)

  4. SqlCommand.ExecuteScalar Отказ

  5. каква е разликата между клъстерен индекс и уникален индекс?