Solution :
Cela fonctionnera pour les tables où il n'y a pas de dépendances sur la table en cours de modification qui déclencheraient des événements en cascade. Assurez-vous d'abord que vous pouvez abandonner la table que vous souhaitez restructurer sans que cela ait des répercussions désastreuses. Prenez note de toutes les dépendances et contraintes de colonnes associées à votre table (c'est-à-dire les déclencheurs, les index, etc.). Vous devrez peut-être les remettre en place lorsque vous aurez terminé.
ÉTAPE 1 : créez la table temporaire pour contenir tous les enregistrements de la table que vous voulez restructurer. N'oubliez pas d'inclure le fichier nouvelle colonne .
CREATE TABLE #tmp_myTable
( [new_column] [int] NOT NULL, <-- new column has been inserted here!
[idx] [bigint] NOT NULL,
[name] [nvarchar](30) NOT NULL,
[active] [bit] NOT NULL
)
ÉTAPE 2 : Assurez-vous que tous les enregistrements ont été copiés et que la structure des colonnes correspond à ce que vous souhaitez.
SELECT TOP 10 * FROM #tmp_myTable ORDER BY 1 DESC
-- Vous pouvez faire COUNT(*) ou n'importe quoi pour vous assurer que vous avez copié tous les enregistrements.
ÉTAPE 3 : DROP la table originale :
DROP TABLE myTable
Si vous êtes paranoïaque et craignez que de mauvaises choses ne se produisent, renommez simplement la table d'origine (au lieu de la supprimer). De cette façon, vous pourrez toujours la récupérer.
EXEC sp_rename myTable, myTable_Copy
ÉTAPE 4 : Recréez la table myTable comme vous le souhaitez (elle doit correspondre à l'élément #tmp_myTable structure du tableau)
CREATE TABLE myTable
( [new_column] [int] NOT NULL,
[idx] [bigint] NOT NULL,
[name] [nvarchar](30) NOT NULL,
[active] [bit] NOT NULL
)
-- n'oubliez pas les contraintes dont vous pourriez avoir besoin
ÉTAPE 5 : Copier tous les enregistrements de la temp #tmp_myTable dans le nouveau tableau (amélioré) maTable .
INSERT INTO myTable ([new_column],[idx],[name],[active])
SELECT [new_column],[idx],[name],[active]
FROM #tmp_myTable
ÉTAPE 6 : Vérifiez si toutes les données sont de retour dans votre nouveau tableau amélioré. maTable . Si oui, nettoyez après vous et supprimez la table temporaire. #tmp_myTable et le maTable_Copy si vous avez choisi de le renommer au lieu de le laisser tomber.