Manuellement en avant une séquence - oracle sql
J'ai besoin de transmettre un ensemble de séquences avec seulement accès DML. En raison d'un bogue dans un morceau de code plusieurs valeurs ont été attrapé sans un ordre, mais au lieu de cela manuellement, de sorte que maintenant la séquence est la duplication de ces valeurs. Donc, je voudrais pousser la séquence à la valeur max de sorte que la prochaine fois nextval est appelé, il donne une valeur plus élevée que le maximum. J'ai environ 50 séquences qui ont chacun pour aller de quelques milliers à suivre.
Est-ce possible avec seulement accès DML? Si oui, comment dois-je procéder?
OriginalL'auteur Jeremy | 2012-03-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le SQL dynamique pour ce faire. Pour exemple ce morceau de code permet de sélectionner le prochain de 10 000 valeurs à partir d'une liste de séquences.
Si vous aviez la possibilité d'émettre des DDL contre la séquence, vous pouvez utiliser une approche similaire pour définir la
INCREMENT
à 10 000, sélectionnez une valeur à partir de la séquence, et de définir laINCREMENT
redescendre à 1 (ou ce qu'il en est maintenant).OriginalL'auteur Justin Cave
Vous devez déterminer la différence entre la valeur suivante de la séquence et à la valeur requise. La valeur requise est généralement la valeur maximale d'une colonne de clé primaire (laissez-le nom de l'ID).
OriginalL'auteur Donato Szilagyi
vous pouvez simplement
jusqu'à ce qu'il est assez grand...
pouvez-vous exécuter PLSQL?
OriginalL'auteur Randy
Si vous avez une table avec au moins autant de lignes que le montant que vous souhaitez ajouter à vos séquences, le travail. Ceci augmente chaque séquence du même montant, ce qui peut ne pas vous convenir, mais il est facile et rapide sans nécessiter de PL/SQL ou de la nécessité de supprimer ou de re-créer la séquence. Je l'utilise tout le temps quand je veux obtenir un serveur de développement des séquences à l'avance de la production.
OriginalL'auteur helrich
Pour redémarrer la séquence à une autre valeur, vous devez supprimer et recréer.
Voir l'Oracle de docs pour
ALTER SEQUENCE
ici.Et pour
CREATE SEQUENCE
iciDonc, non, je ne pense pas que c'est possible, avec accès DML, à moins que vous simplement incrémenter à plusieurs reprises comme Randy suggère.
OriginalL'auteur Tim Gage