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

SQL Oracle Discussion :

Insert into avec n+1 sans séquence


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut Insert into avec n+1 sans séquence
    Bonjour à tous,

    Je suis sous Oracle 10g, je bosse actuellement sur une base de données sur laquelle je dois faire des insert sur 2 tables en même temps. Mon problème n'est pas de faire 2 insert dans deux tables, mais la compréhension de la structure d'une table dans laquelle je dois insérer (table codebarre).

    Dans codebarre j'ai une colonne prefix qui nullable = No. Je n'ai aucune séquence stockée en base de données pour cette colonne mais celle ci contient des données déjà insérées par d'autres personnes. Le prefix semble s'auto incrémenter de +1 à chaque insertion en fonction du secteur.

    codebarre :
    ID NUMBER(10,0) No
    SECTOR CHAR(1 BYTE) No
    YEAR NUMBER(2,0) No
    PREFIX NUMBER(5,0) No

    codebarre :
    id Sector YEAR Prefix
    1 L 10 1
    2 L 10 2
    3 L 10 3
    4 L 10 4
    5 L 10 5
    36699 F 11 1
    36905 F 11 2
    36906 F 11 3
    36909 F 11 4

    Je me demande si il y aurait un moyen d'insérer dans codebarre un prefix tel que : sector like 'F' and YEAR = 11 and PREFIX = precedent prefix+1 dans un insert into ?

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    un sujet similaire abordé ici

    Bon courage

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous n'avez pas tout simplement un trigger sur votre table ?

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    salut,

    Merci pour vos réponses. J'ai effectivement un trigger pour cette table, mais je n'ai pas l'impression qu'il gère la colonne PREFIX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    create or replace TRIGGER "TBB".TOB_CODEBARRE
    	BEFORE INSERT OR UPDATE ON CODEBARRE
    	FOR EACH ROW
    DECLARE 
    	integrity_error  exception;
    	errno            integer;
    	errmsg           char(200);
    BEGIN
    	-- autoincrement
    	IF INSERTING THEN
    		BEGIN
    			SELECT S_CODEBARRE.NEXTVAL INTO :NEW.ID FROM dual;
    		EXCEPTION
    			WHEN integrity_error THEN 
    				raise_application_error(errno, errmsg);
    		END;
    	END IF;
     
      BEGIN
    	-- calculated row CODEBARRE of RESSOURCE table
    	UPDATE RESSOURCE SET CODEBARRE = 	:NEW.SECTOR || TO_CHAR(:NEW.YEAR,'FM00') || TO_CHAR(:NEW.PREFIX,'FM00000') ||
    			    					DECODE(:NEW.CATEGORY, 2, 'E', 3, 'D', NULL,'','') || TO_CHAR(:NEW.SUFFIX,'FM00') 
    		WHERE CODEBARRE_ID = :NEW.ID ;
      EXCEPTION
        WHEN OTHERS THEN NULL;
      END;
     
    END;
    C'est pour cela que je demande si il est possible de faire des insert into avec conditions. Je suis un peu perdu.

    Any idea ?

    Merci.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    On peut faire ce qu'on veut, vous avez de gros éléments de réponse dans le lien posté par Yanika_bzh.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    Merci Waldar pour ta réponse. Je vais me pencher un peu plus sur le lien de Yanika_bzh.

    Par contre, le trigger ne gère pas la colonne PREFIX, c'est bien ça?

    A+

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

Discussions similaires

  1. insert into avec une date
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/11/2006, 22h08
  2. [Débutant] INSERT INTO avec VALUES + SELECT
    Par Feezdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2006, 10h10
  3. INSERT INTO avec date (asp/access)
    Par ddeee dans le forum ASP
    Réponses: 2
    Dernier message: 30/03/2006, 13h07
  4. [MySQL] Php et INSERT INTO, avec variables
    Par Djwaves dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 20/02/2006, 13h53
  5. INSERT INTO avec une valeur numéroauto
    Par priest69 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 08/11/2005, 15h39

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