2008-09-22 12 views
1

J'ai un certain nombre de tables qui utilisent la colonne trigger/sequence pour simuler auto_increment sur leurs clés primaires, ce qui a fonctionné très bien pendant un certain temps. Afin d'accélérer le temps nécessaire pour effectuer des tests de régression sur un logiciel qui utilise la base de données, je crée des fichiers de contrôle en utilisant quelques exemples de données, et je les ajoute au processus de construction. Cette modification entraîne la panne de la plupart des tests, car le processus de test installe le schéma à partir de zéro et les séquences renvoient des valeurs qui existent déjà dans les tables. Existe-t-il un moyen de dire par programme "Mise à jour des séquences à la valeur max dans la colonne" ou ai-je besoin d'écrire un script entier pour mettre à jour toutes ces séquences, ou puis-je changer le déclencheur séquence à certains comment vérifier cela (bien que je pense que cela pourrait causer le problème de la table de mutation)?Insertion manuelle de données dans une ou plusieurs tables avec une clé primaire remplie de séquence

Répondre

1

Vous pouvez générer un script pour créer les séquences avec les valeurs de départ dont vous avez besoin (en fonction de leurs valeurs existantes) ....

SELECT « CREATE SEQUENCE '|| sequence_name ||' COMMENCER PAR '|| last_number ||'; ' DE ALL_SEQUENCES OU PROPRIÉTAIRE = your_schema

(Si je comprends bien la question)

+0

J'ai un script qui enregistre les données dans des fichiers de contrôle. J'ai étendu ce processus pour également déposer et créer des instructions dans un script séparé que je cours après avoir importé toutes les données des fichiers de contrôle. –

0

Dans le cadre de la reconstruction de votre schéma, pourquoi ne pas supprimer et recréer la séquence?

+0

La reconstruction de schéma supprime tous les objets de base de données, y compris les séquences. Le problème est que lorsqu'ils sont recréés, ils ont tous une valeur de départ par défaut de zéro et il y a déjà des enregistrements dans les tables avec les identifiants de 0 à X à partir des exemples de données qui sont chargés avec sqlldr. –

1

Voici un moyen simple de mettre à jour une valeur de séquence - dans ce cas, le réglage de la séquence à 1000 si elle est actuellement 50:

Félicitations aux créateurs de PL/SQL Developer pour avoir inclus cette technique dans leur outil.

Questions connexes