IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Oracle insert erreur


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Oracle insert erreur
    Bonjour,

    Je suis sous oracle et je cherche à gérer l'auto_incrémentation. J'ai donc créé une séquence et un trigger mais par exemple quand j'ai une erreur dans un insert, j'ai mon id qui reste quand même en mémoire même si mon insert 'na pas lieu: par exemple, j'ai 1 - 2 - 4 au lieu de 1 - 2 - 3.
    Je cherche donc un moyen de vérifier que mon insert ne retourne pas d'erreur et s'il n'y a pas d'erreur j'incrémente mon id.
    Voici un de mes triggers qui gère l'auto incrémentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create or replace TRIGGER "AUTO_PIECE" 
    BEFORE INSERT ON PIECE
    FOR EACH ROW
    BEGIN
    SELECT PIECE_SEQ.nextval INTO :new.idPiece FROM DUAL;
    END;
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Poser une nouvelle fois la question ne changera pas la réponse.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Il y aucun moyen de vérifier si un insert retourne une erreur ou pas

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Je vais réitérer ma réponse :
    • Le trigger s'exécute avant l'insertion dans la table (BEFORE INSERT).
    • Si l'enregistrement de la ligne est refusé parce qu'elle ne respecte pas les contraintes, cela ne se fera donc qu'après que le trigger ait été exécuté et la séquence incrémentée.
    • Lorsque le programme qui a effectué l'insertion reçoit l'erreur d'exécution, il n'est pas impossible q'une autre ligne ait été insérée après celle qui est en erreur.
    • Il n'est alors plus possible de modifier la séquence puisqu'elle indique bien la dernière valeur affectée.

    Qu'est-ce qui n'est pas clair ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Il y pas de moyen pour que le trigger s'exécute que si j'ai pas d'erreur dans l'insert

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Si je fait ceci, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace TRIGGER "AUTO_TYPE_AVION" 
    BEFORE INSERT ON PIECE
    FOR EACH ROW
    DECLARE
    idMax NUMBER;
    BEGIN
    SELECT MAX(idPiece) INTO idMax FROM PIECE;
    :new.idPiece:= idMax +1; 
    END;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle 9i]: erreur ORA-01925 (max enables roles)
    Par NPortmann dans le forum Oracle
    Réponses: 2
    Dernier message: 30/03/2007, 09h39
  2. [Oracle 9i] Erreur d'import IMP-00008
    Par zestrellita dans le forum Oracle
    Réponses: 2
    Dernier message: 05/05/2006, 11h39
  3. [Oracle] Insert avec récupération valeur de la cle
    Par Silvia12 dans le forum Oracle
    Réponses: 2
    Dernier message: 11/03/2006, 03h28
  4. [Forms10g/oracle 9i] erreur ORA-01652
    Par marcalexis dans le forum Oracle
    Réponses: 6
    Dernier message: 14/02/2006, 18h30
  5. [Oracle 9i] Erreur: wrong incarnation of this file
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 5
    Dernier message: 26/11/2004, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo