Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Remplacer la colonne d'identité de int à bigint

Eh bien, ce ne sera pas un moyen rapide et facile de le faire, vraiment...

Mon approche serait la suivante :

  1. créer une nouvelle table avec une structure identique - à l'exception de l'ID la colonne étant BIGINT IDENTITY au lieu de INT IDENTITY

    ----[ mettez votre serveur en mode mono-utilisateur exclusif ici ; l'utilisateur ne peut pas utiliser votre serveur à partir de maintenant ]----

  2. trouver et désactiver toutes les contraintes de clé étrangère référençant votre table

  3. activer SET IDENTITY_INSERT (your new table) ON

  4. insérer les lignes de votre ancien tableau dans le nouveau tableau

  5. désactivez SET IDENTITY_INSERT (your new table) OFF

  6. supprimer votre ancien tableau

  7. renommez votre nouvelle table avec l'ancien nom de table

  8. mettre à jour toutes les tables qui ont une référence FK à votre table pour utiliser BIGINT au lieu de INT (cela devrait être faisable avec un simple ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. recréer à nouveau toutes les relations de clé étrangère

  10. vous pouvez maintenant rétablir l'utilisation multi-utilisateur normale de votre serveur