Problème Modification de l'ordre de colonne dans une table (SQL Server 2008)
-
06-09-2019 - |
Question
Lorsque je tente de modifier cette liste de colonnes:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
dans ce (IdLineaProducto est d'abord)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio dit que ce n'est pas permis d'enregistrer les modifications car la table doit être supprimée et recréée (en espagnol ...). Je pourrais le faire dans SQL Server 2005, mais pas dans SQL Server 2008.
La même chose se produit dans d'autres situations, comme essayer de transformer une int colonne non-identité à l'identité. Pourquoi se passe-t-il? Comment puis-je résoudre ça? Peut-être un problème misconfigured? Une nouvelle fonctionnalité dans SQL Server?
La solution
J'ai trouvé le solution à ce problème .
Ceci est par la conception et peut être rapidement fixe dans Management Studio par décochant une propriété. Pour résoudre ce problème dans Management Studio, allez dans Outils -> Options puis passez à la page Designer et décocher la case « Empêcher les changements d'économie qui nécessitent la recréation de table ».
Méfiez-vous qu'il peut avoir conséquences indésirables , comme la perte de données dans d'autres tableaux liés à cela.
Autres conseils
C'est juste la façon dont cela fonctionne ... vous ne pouvez ajouter des colonnes à la fin, à moins que vous DROP
et CREATE
il (aller et retour dans la copie des données normalement, que l'IDE peut aider). Mais pourquoi voulez-vous changer l'ordre? Même si ce n'est pas idéal, votre SELECT
etc peut gérer cela ... i.e..
SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM TheTable
...
(il est rarement une bonne idée d'utiliser juste SELECT *
)
Re l'IDENTITY
; à nouveau, ce qui est fondamental à la colonne - bien que dans ce cas, vous pouvez copier les données sur, DROP
la colonne, et re-ADD
la colonne comme IDENTITY
(à droite), et copiez-le dans - mais vous avez complications supplémentaires avec IDENTITY INSERT
et la valeur SEED
(vous ne pas essayer d'obtenir des doublons de valeurs d'identité existantes).