J'ai cette table dans un DB Oracle qui a une clé primaire définie sur 3 des colonnes de données. Je souhaite supprimer la contrainte de clé primaire pour autoriser les lignes avec des données en double pour ces colonnes et créer une nouvelle colonne, 'id', pour contenir un ID entier auto-incrémenté pour ces lignes. Je sais comment créer une séquence et déclencher l'ajout d'un ID auto-incrémenté pour les nouvelles lignes ajoutées à la table, mais est-il possible d'écrire une instruction PL/SQL pour ajouter des ID uniques à toutes les lignes déjà présentes dans la table?Affectation d'une valeur d'incrémentation automatique à une nouvelle colonne dans Oracle
Répondre
Une fois que vous avez créé la séquence:
update mytable
set id = mysequence.nextval;
Si vous utilisez simplement un entier pour une séquence, vous pouvez mettre à jour l'ID avec le rownum. par exemple.
update
table
set id = rownum
Vous devez ensuite réinitialiser la séquence à l'ID valide suivant.
Est-ce que vous avez besoin?
UPDATE your_table
SET id = your_seq.nextval;
Cela suppose que vous ne vous souciez pas quel ordre vos clés primaires sont.
D'abord, vous devez vérifier votre PCTFREE ... est-il assez de place pour chaque ligne pour obtenir plus?
Si vous choisissez un très petit PCTFREE ou que vos données ont beaucoup de mises à jour, vous pouvez commencer à enchaîner chaque ligne pour faire cela comme une mise à jour.
Vous êtes presque certainement mieux de faire cela en tant que CTAS.
Créer la table t2 en sélectionnant seq.nextval, t1. * À partir de t1.
goutte t1
renommage t2 à t1.
- 1. Affectation d'une valeur par défaut à une colonne de données dans une instruction select
- 2. Comment renvoyer une nouvelle valeur de colonne IDENTITY à partir d'une instruction SQLServer SELECT?
- 3. Affectation de données dans une nouvelle table à une clé étrangère existante dans une boucle for
- 4. Ajouter une nouvelle colonne dans Infragistics Wingrid
- 5. Affectation d'une valeur à la colonne avec référence, à l'aide du cadre d'entité
- 6. Débogueur Visual Studio - Affectation des variables automatique
- 7. Affectation de valeur de PHP à JavaScript
- 8. Affectation d'une valeur numérique à une variable en VBA
- 9. Affectation d'une vignette à la nouvelle catégorie wordpress
- 10. Ajouter une nouvelle colonne dans une grande table mysql
- 11. Détection d'une colonne avec une valeur par défaut à l'aide de l'interface d'appel Oracle (OCI)
- 12. LINQ to SQL: Ordre 2 Colonnes dans une nouvelle colonne
- 13. Affectation de valeur en C#
- 14. La meilleure façon d'ajouter une nouvelle colonne avec une valeur initiale (mais pas par défaut)?
- 15. 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?
- 16. Insérer Max Valeur de la colonne dans une autre colonne
- 17. Delphi 2010: Nouvelle valeur RTTI, valeur de propriété affectée à une valeur arbitraire
- 18. Affectation d'une valeur à la matrice de char allouée échoue
- 19. automatique valeur-clé d'observation à Cocoa
- 20. Récupération d'une valeur NULL de la base de données et affectation à une variable de date
- 21. Django: enregistrer une nouvelle valeur dans un ManyToManyField
- 22. Ajout d'une nouvelle ligne (avec une colonne gabarit) à un Infragistics UltraWebGrid
- 23. SQL UPDATE SET une colonne doit être égale à une valeur dans une table liée référencée par une colonne différente?
- 24. java.sql.SQLException: [BEA] [Pilote Oracle JDBC] [Oracle] ORA-01438: valeur supérieure à la précision spécifiée autorise cette colonne
- 25. lignes SQL sélection où une valeur de colonne est commune à une autre colonne de critères
- 26. Sélectionnez une colonne factice avec une valeur factice dans SQL?
- 27. Forcer la colonne SQL Server à une valeur spécifique
- 28. Pourquoi utiliser une affectation dans une condition?
- 29. Oracle - nom de colonne dynamique dans l'instruction select
- 30. Mise à niveau d'une table de base de données pour ajouter une nouvelle colonne