Problème Modification de l'ordre de colonne dans une table (SQL Server 2008)

StackOverflow https://stackoverflow.com/questions/930713

  •  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?

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top