Je suis en train de "nettoyer" une base de données et j'ai besoin de synchroniser les colonnes IDENTITY. J'utilise des procédures stockées pour gérer les données et les mettre en miroir d'une table à l'autre (après le nettoyage et la correction des types de données). À un moment donné dans le futur, je vais vouloir couper l'ancienne table et utiliser uniquement la nouvelle table, ma question est comment faire pour que le champ IDENTITY reste synchronisé pendant qu'ils sont tous les deux utilisés ... Une fois l'ancienne table retirée nouveau doit continuer à auto-incrémentation et la reconstruction/modification pour changer le champ IDENTITY n'est pas une option. Est-ce possible ou existe-t-il une meilleure façon de s'y prendre? Mon autre pensée était de créer une table de recherche pour stocker les colonnes ID des deux tables et chaque fois qu'il y a un insert dans la nouvelle table prendre l'ancien ID et nouvel ID et les insérer dans la table de recherche. C'est un peu désordonné une fois que la vieille table est à l'écart.Plusieurs tables SQL avec colonnes IDENTITY synchronisées
Répondre
- Définissez l'identité de la nouvelle table comme zone de non-identité.
- Modifiez vos procédures de remplissage de données pour remplir le champ de non-identité de votre nouvelle table avec la valeur d'identité de l'ancienne table.
- Lors de la transition, passez votre nouveau champ à l'auto-incrémentation et set the seed number en conséquence.
Été là, fait cela. Mettez l'ancien ID dans la nouvelle table en tant que FK. Déposez cette colonne juste avant de déposer l'ancienne table.
J'aime cette idée (+1). Donc, avant d'utiliser votre table NEWR, changez le type en un champ d'identité? –
+1 J'aime cette idée, mais j'ai oublié de mentionner qu'il y aurait des enregistrements ajoutés à la nouvelle table qui ne seraient pas dans l'ancienne table. Ma solution est de changer le champ ID de la nouvelle table en un champ de non-identité et de mettre un déclencheur sur l'ancienne table pour remplir le nouveau. Puis sur cut-over je vais changer d'identité. – jon3laze
Non, non. La nouvelle table obtient son propre champ d'identification. Les anciens ou nouveaux enregistrements obtiennent le nouvel identifiant lorsqu'ils sont insérés dans la nouvelle table. new_table.old_id vaut par défaut null, mais lorsque vous copiez des enregistrements à partir de l'ancienne table, vous attribuez à old_id la valeur old_table, id: insert new_table (c1, c2, old_id), sélectionnez c1, c2, id depuis old_table; – tpdi
- 1. SQL Pivot avec plusieurs colonnes
- 2. Insertion SQL avec des données provenant de plusieurs tables
- 3. Requête SQL avec regroupement par plusieurs colonnes
- 4. Recherche avec plusieurs tables SQL Server
- 5. table fixe unique avec plusieurs colonnes vs tables abstraites flexibles
- 6. Utilisation de plusieurs tables, plusieurs valeurs avec Min() SQL
- 7. Requête SQL sur plusieurs tables
- 8. données de somme sql de plusieurs tables
- 9. requête SQL pour joindre plusieurs colonnes
- 10. Plusieurs instances ActiveRecord sont-elles synchronisées automatiquement?
- 11. Regroupement de plusieurs colonnes avec agrégation et somme sql sever
- 12. RECHERCHE plusieurs tables dans SQL
- 13. requêtes SQL pour plusieurs tables
- 14. Ajout d'éléments à plusieurs tables avec linq à sql
- 15. plusieurs-à-un avec plusieurs colonnes
- 16. Joindre deux tables - plusieurs colonnes à une seule colonne
- 17. T-SQL à PL/SQL (IDENTITY)
- 18. DataSet avec plusieurs tables
- 19. Colonne IDENTITY composée dans SQL SERVER 2008
- 20. Renvoyer plusieurs colonnes dans Linq à Sql?
- 21. Pivot de plusieurs colonnes dans T-SQL
- 22. Comment filtrer des colonnes dans deux tables avec une relation plusieurs-à-plusieurs?
- 23. Comment faire pour gérer plusieurs à plusieurs tables de liaison avec des colonnes supplémentaires
- 24. Conservation des tables synchronisées entre les applications Rails sans réplication SQL?
- 25. SQL WHERE .. plusieurs colonnes à l'article
- 26. Renvoyer plusieurs colonnes de la procédure SQL avec .NET
- 27. Problème MySQL avec plusieurs tables
- 28. LINQ to SQL Insérer plusieurs tables Question
- 29. Comma SQL liste séparée de plusieurs colonnes
- 30. Comment créer XML/XSD de table SQL avec plusieurs tables
La modification d'un champ de non-identité en identité nécessite-t-elle une reconstruction de la table? – jon3laze
Quel serveur SQL utilisez-vous? Pour MS SQL, non. Ajout du lien ci-dessus à l'article MSDN pertinent –
Oui MSSQL. Merci pour l'article. – jon3laze