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 :

Insertion en double [11gR2]


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Insertion en double
    Bonjour à tous les forumeurs et formeuses, voici mon problème, j'ai crée une base de données dans laquelle je voudrais insérer des données dont l'id est auto incrémentée, pour illustrer mon propos je parlerais de ma table FOURNISSEUR

    J'ai en premier lieu crée une séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE SEQUENCE autoincrement
    	START WITH 1
    	MINVALUE 1
    	NOCYCLE
    	NOCACHE
    	ORDER;
    /
    Suivi d'un trigger sur ma table fournisseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE TRIGGER increm_fournisseur
    BEFORE INSERT
    ON FOURNISSEUR
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
    	SELECT autoincrement1.nextval
    	INTO:NEW.id_fournisseur
    	FROM DUAL;
    	END;
    /
    et enfin j'ajoute des données au moyen d'un fichier txt qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    INSERT INTO FOURNISSEUR
     	(user_id_fournisseur, nom_fournisseur, mail_fournisseur)
    	VALUES ( 1238, 'bara', 'fez.re@viacrzzesize.fr');
    /
    INSERT INTO FOURNISSEUR
     	(user_id_fournisseur, nom_fournisseur, mail_fournisseur)
    	VALUES ( 2768, 'taffin', 'jaifaim@viacesi.fr');
    /
     
    INSERT INTO FOURNISSEUR
     	(user_id_fournisseur, nom_fournisseur, mail_fournisseur)
    	VALUES ( 1789, 'Robespierre', 'robers@revolution.fr');
    /
    Le problème étant que les données insérees se font en double, c'est à dire qu'au lieu de 3 lignes, j'en ai 6 qui se crée. Je vous demande donc quelle erreur j'ai faite ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Le ; exécute l'insert puis le / le réexécute, donc soit l'un soit l'autre.

    Par contre ça signifie que la table contient une clé primaire auto-incrémentée mais aucune contrainte fonctionnelle associée.
    Il serait sûrement pertinent de placer une contrainte d'unicité sur le nom du fournisseur par exemple (ou sur l'ensemble des colonnes qui composeront la contrainte fonctionnelle)

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

Discussions similaires

  1. Requête d'insertion avec double sélection
    Par Viammi dans le forum Langage SQL
    Réponses: 12
    Dernier message: 05/05/2012, 22h55
  2. Problème d'insertion avec double TIMESTAMP
    Par Tchupacabra dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 03/12/2007, 09h23
  3. Insertion en double dans ma bdd
    Par n@n¤u dans le forum Hibernate
    Réponses: 13
    Dernier message: 20/07/2007, 15h33
  4. [Oracle] Insertions en double
    Par tonton93 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/03/2007, 20h39
  5. [MySQL] Insertion en double
    Par warmup27 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/11/2006, 18h18

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