T-SQL Ajouter une Colonne Dans un Ordre Spécifique
Im un peu de nouvelles de T-SQL, Venant d'une base de données MySQL fond Im continuent de s'adapter aux différentes nuances dans la syntaxe.
Je cherche à ajouter une nouvelle colonne APRÈS une spécifique. J'ai trouvé que AFTER
est un mot clé valide, mais je ne pense pas que c'est la bonne pour l'emploi.
ALTER TABLE [dbo].[InvStockStatus]
ADD [Abbreviation] [nvarchar](32) DEFAULT '' NOT NULL ;
C'est ma requête actuelle, qui fonctionne bien, sauf qu'il ajoute le champ à la fin de la Table, Id préfèrent ajouter après [Name]
. Quelle est la syntaxe je cherche à représenter cela?
OriginalL'auteur Aren | 2010-06-03
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire comme ça
par exemple, si vous avez un tableau comme celui
et vous souhaitez ajouter une autre colonne id2 entre id1 et id3 alors voici ce que SQL Server n'derrière la scène si vous utilisez le concepteur
Comme vous pouvez le voir si vous avez beaucoup de données, cela peut être problématique, pourquoi importe-t-il lorsque la colonne est-elle située? utilisez simplement
OriginalL'auteur SQLMenace
Tout à partir d'une base de données fonctionnelle perspective, il est exact que les tuples peuvent apparaître dans n'importe quel ordre.
Cependant une base de données n'existe pas dans un vacuum. Il y a toujours un humain qui voudront lire le schéma de la table (administrateurs de bases de données, développeurs) et y arriver en tête autour de lui et de maintenir ou d'écrire des requêtes.
Dans le passé, j'ai utilisé des conventions pour des colonnes de la table comme la commande d'une table avec
et ces aider lors de la numérisation d'une table. Malheureusement, il semble que vous avez à sauter à travers des cerceaux pour maintenir n'importe quel ordre, alors maintenant, j'ai à la question de savoir s'il vaut la peine de l'avoir et de maintenir ces conventions. Ma nouvelle règle, il suffit de l'ajouter à la fin.
Si vous êtes vraiment inquiet au sujet de l'ordre d'un point de vue de la lisibilité, vous devez créer votre propre "lisibilité" points de vue (peut-être dans un autre schéma) dans n'importe quel ordre vous vous sentez comme. Vous pourriez avoir plusieurs vues de la même table (un pour juste la base des colonnes et de l'autre, y compris des trucs qui, généralement, n'est pas pertinent).
Il serait agréable d'être en mesure d'être en mesure de re-ordre des colonnes dans SQL Server schémas de base de données (comme un affichage de la chose), mais ce n'est pas possible.
OriginalL'auteur AndyM
La séquence des colonnes est vraiment hors de propos dans un strict (fonctionnelle) de sens, dans tous les SGBDR - c'est juste un "concept" pour de la documentation ou de l'homme à regarder.
SQL Server ne prend pas en charge tous les T-commandes SQL à l'ordre des colonnes en aucune façon. Donc, il n'y a pas de syntaxe en T-SQL pour effectuer cette opération.
La seule façon de changer c'est d'utiliser les visuels concepteur de table dans SSMS, qui recrée l'ensemble de la table à partir de zéro, lorsque vous vous déplacez autour des colonnes ou insérer des colonnes dans le milieu de la table.
OriginalL'auteur marc_s
Le schéma de comparaison des outils que j'ai vu va créer une nouvelle table avec les commande, puis copier les données à partir de l'ancien tableau à la nouvelle (avec quelques renommage de magie pour faire le nouveau ressembler à l'ancienne). Compte tenu de la façon akward cette approche est, j'ai la figure il n'y a pas une instruction T-SQL pour ajouter une nouvelle colonne dans un endroit précis.
OriginalL'auteur Mayo
Vous devriez toujours ajouter des champs à la fin. Vous devez sélectionner les champs dans l'ordre que vous voulez, mais jamais restructurer une table existante pour ajouter une colonne dans la moyenne. Cela est susceptible de casser un peu les choses (où les gens n'ont muette des choses comme select * ou insère sans spécifier les colonnes accordé les gens ne devraient pas faire ces choses, mais ils n').
De recréer la table peut être un long processus qui prend du temps pour le peu de gain que ce soit et peut causer beaucoup de plaintes des utilisateurs et de blocage alors que c'est en cours.
OriginalL'auteur HLGEM
Techniquement, ou peut-être devrais-je dire, sur le plan scolaire, l'ordre dans lequel les colonnes sont ajoutées à une table, ou l'ordre dans lequel ils sont stockés dans la base de données interne du modèle de stockage, ne devrait pas être de toute préoccupation. Vous pouvez tout simplement la liste de colonnes dans la clause Select de vos requêtes SQL pour contrôler l'ordre des colonnes ou des expressions calculées apparaissent dans la sortie de la requête exécutée. En interne, la base de données est libre pour stocker les données réelles comme il l'entend afin d'optimiser le stockage et /ou d'aider à harmoniser les éléments de données de disque et/ou des limites de mémoire.
ORDER BY
contrôle de l'ordre des lignes, et non pas l'ordre des colonnes..vrai, pet cerveau.. édité pour corriger
OriginalL'auteur Charles Bretana
C'est un sûr contourner sans l'aide de la table temporaire. Après l'ajout de la colonne vers la fin, il suffit d'aller à SQL server Management Studio. Cliquez sur le tableau, sélectionnez -> Conception (ou de Modifier) et faites-le glisser de la dernière colonne à l'endroit où la position que vous voulez.
De cette façon, vous n'avez pas à vous soucier de perdre des données et des index. La seule autre option est de recréer la table qui peut être problématique si vous avez de gros volumes de données.
Cette réponse, c'est pour aider les autres et ne sont pas destinés à être accepté comme réponse.
Oh je ne voulais pas de ce accepté de répondre. Je veux juste aider les autres personnes qui pourraient rencontrer le même. L'on a accepté la réponse est la réponse correcte. Merci pour les commentaires!
Marqué comme je pense que cette réponse, bien qu'apprécié, peut-être trompeur!
OriginalL'auteur Hammad Khan
Une bonne quantité de temps s'est écoulé depuis que cette question a été posté, mais il est intéressant de noter que, alors que les raw du code SQL à la place des colonnes dans un ordre spécifique n'a pas changé le processus de génération de scripts de le faire est de prendre en compte si vous choisissez d'utiliser des Outils de Données SQL Server au sein de Visual Studio pour gérer votre base de données. La base de données que vous déployez pour toujours avoir les colonnes dans l'ordre que vous spécifiez dans votre projet.
OriginalL'auteur Greg the Incredulous