Je souhaite ajouter une colonne à une base de données existante existante et écrire une procédure permettant d'attribuer à chaque enregistrement une valeur différente. Quelque chose comme ajouter une colonne et générer automatiquement les données pour cela. Par exemple, si j'ajoute une nouvelle colonne appelée "ID" (nombre), je veux initialiser une valeur unique pour chacun des enregistrements. Donc, ma colonne d'identification aura des enregistrements de 1 à 1000. Comment faire?Ajouter une colonne à une table existante et les numéroter de manière unique
Répondre
Cela dépendra de la base de données mais pour SQL Server, cela pourrait se faire comme suit:
alter table Example
add NewColumn int identity(1,1)
Cela a fonctionné magnifiquement et ajouté tous les numéros dont j'avais besoin automatiquement. Merci! – djangofan
Si vous avez des problèmes pour changer avec le logiciel de gestion, vous pouvez changer les paramètres sous/Outils/Options/Concepteur/Table et Base de données Desiger vous trouverez une case à cocher "Empêcher les modifications nécessitant une recréation". sera en mesure d'ajouter une colonne d'identité, même en utilisant le GUI. – surfmuggle
merci de poster –
Tout en utilisant la commande ALTER TABLE devrait fonctionner. Ajoutez la colonne avec le type et un drapeau d'identité et il devrait faire l'affaire
Vérifiez cet article MSDN http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx sur la syntaxe ALTER TABLE
Merci pour le ref de l'article. D'une manière ou d'une autre, je n'avais jamais lu d'IDENTITÉ auparavant! –
Cela dépend de la base de données que chaque base de données a une façon différente d'ajouter la séquence Nombres. Je voudrais modifier la table pour ajouter la colonne puis écrire un script DB dans groovy/python/etc pour lire dans les données et mettre à jour l'ID avec une séquence. Une fois les données définies, j'ajouterais une séquence à la table qui commence après le nombre supérieur. Une fois les données définies, définissez correctement les clés primaires.
pour Oracle que vous pourriez faire quelque chose comme ci-dessous
alter table mytable add (myfield integer);
update mytable set myfield = rownum;
Roy Tang: Cela a été d'une grande aide. Merci! – Abdul
Il serait utile si vous avez publié ce que la base de données SQL que vous utilisez. Pour MySQL, vous voulez probablement auto_increment:
ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY
Vous ne savez pas si cela applique rétroactivement les valeurs. Si ce n'est pas le cas, vous devriez juste pouvoir parcourir vos valeurs avec une procédure stockée ou dans un programme simple (tant que personne d'autre n'écrit dans la base de données) et utiliser la fonction LAST_INSERT_ID()
pour générer la valeur de l'ID.
Je peux aussi confirmer que cela fonctionne bien pour MySQL; J'ai simplement ajouté un champ d'identifiant incrémenté à une table non indexée existante et chaque rangée a un nouvel identifiant unique. –
Désolé c'est un ancien mais il a dit serveur SQL dans le titre. – Nick
@Nick cette réponse est utile pour moi –
Et l'équivalent Postgres (deuxième ligne est obligatoire que si vous voulez « id » être une clé):
ALTER TABLE tableName ADD id SERIAL;
ALTER TABLE tableName ADD PRIMARY KEY (id);
Si vous ne voulez pas que votre nouvelle colonne à être de type IDENTITY
(auto increment), ou vous voulez être précis sur l'ordre dans lequel vos lignes sont numérotées, vous pouvez ajouter une colonne de type INT NULL
puis la remplir comme ceci. Dans mon exemple, la nouvelle colonne s'appelle MyNewColumn et la colonne de clé primaire existante pour la table s'appelle MyPrimaryKey.
UPDATE MyTable
SET MyTable.MyNewColumn = AutoTable.AutoNum
FROM
(
SELECT MyPrimaryKey,
ROW_NUMBER() OVER (ORDER BY SomeColumn, SomeOtherColumn) AS AutoNum
FROM MyTable
) AutoTable
WHERE MyTable.MyPrimaryKey = AutoTable.MyPrimaryKey
Cela fonctionne dans SQL Sever 2005 et plus tard, à savoir les versions qui supportent ROW_NUMBER()
pour UNIQUEIDENTIFIER type de données dans le serveur sql essayer
Alter table table_name
add ID UNIQUEIDENTIFIER not null unique default(newid())
Si vous voulez créer la clé primaire de cette Utilisez cette colonne
ALTER TABLE table_name
ADD CONSTRAINT PK_name PRIMARY KEY (ID);
- 1. Ajouter une colonne id et la remplir dans une table existante dans Rails?
- 2. Comment modifier une table PostgreSQL et rendre une colonne unique?
- 3. Alter Table Ajouter une colonne Syntaxe
- 4. Ajout d'un datarow d'une table existante à une nouvelle table
- 5. Existe-t-il une méthode pour copier une nouvelle colonne dans une table existante et copier les informations de colonne d'une autre table dans Oracle?
- 6. SQL Server 2005: comment ajouter une colonne à une table au début de la table?
- 7. Ajouter une nouvelle colonne dans une grande table mysql
- 8. Puis-je ajouter une contrainte UNIQUE à une table PostgreSQL, après qu'elle a déjà été créée?
- 9. Ajouter une vue à une application Rails existante - simple?
- 10. Comment ajouter une colonne dans une table de base de données sqlite 2
- 11. Comment identifier une entité de manière unique dans Entity Framework?
- 12. Mise à niveau d'une table de base de données pour ajouter une nouvelle colonne
- 13. entity-framework une table sans clé unique
- 14. Comment insérer une vue dans une cellule de table existante?
- 15. Ajouter une propriété à la classe VBA existante
- 16. Ajouter une option du serveur à la liste existante
- 17. Comment ajouter un objet IDisposable + delegate à une classe existante
- 18. Ajout de la valeur par défaut à la colonne existante
- 19. Comment ajouter un décorateur à une méthode d'objet existante?
- 20. Impact pour augmenter la longueur de colonne d'une table existante
- 21. Ajouter une colonne "help" dans sharepoint
- 22. Comment ajouter une chaîne à une valeur de colonne dans MySQL?
- 23. Comment ajouter une méthode de modèle à une classe existante dans une session interactive (dans iPython)?
- 24. Joindre plusieurs colonnes dans une table à une seule colonne dans une autre table
- 25. Affectation de données dans une nouvelle table à une clé étrangère existante dans une boucle for
- 26. Définir une colonne existante de la table MS SQL comme NOT NULL
- 27. identifier de manière unique iPhone sur une application web
- 28. Comment puis-je ajouter une paire de chaîne de requête à une URL existante dans jquery
- 29. Comment ajouter une colonne personnalisée à une grille MvcContrib?
- 30. Performance d'insertion d'index clusterisée sur une colonne pas si unique?
Cela va être spécifique à la base de données. Vous devez spécifier la base de données avec laquelle vous travaillez. – dvorak
Je travaille dans SQL Server. –
Vous devriez éditer votre question pour le mentionner. – dvorak