Bonjour à tous et bonne année 2011,


Lors de l'insertion dans une vue multi-table je récupère l'identifiant d'une table pour l'insérer dans une autre table :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE OR ALTER TRIGGER V_LIGNE_COMMANDE_AI0 FOR V_LIGNE_COMMANDE
ACTIVE AFTER INSERT POSITION 0
AS
declare LigneID BIGINT;
begin
  insert into tb_commande_ligne (commande_id,taux_remise,taux_taxe,accepted)
  values (new.commande_id, new.taux_remise, new.taux_taxe,new.accepted)RETURNING LIGNE_ID into : LigneID;
 
  insert into st_tb_ligne (Ligne_id,Ligne_qte,ligne_pu,art_id)
  values (:LigneID,new.ligne_qte,new.ligne_pu,new.art_id);
end

Jusque là ça fonctionne bien.

L'appel de l'Insert se fait dans une procédure stockée :
Code SQL : 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
 
 insert into v_ligne_commande
  (commande_id,
   taux_remise,
   taux_taxe,
   accepted,
   ligne_qte,
   ligne_pu,
   art_id)
 
  values
   (:commande_id,
    :taux_remise,
    :taux_taxe,
    :accepted,
    :ligne_qte,
    :ligne_pu,
    :art_id) returning ligne_id into :IDLIGNE;

J'essaye de faire un 2eme RETURNING pour récupérer le LIGNE_ID dans le IDLIGNE mais il semblerais que ca ne fonctionne pas (valeur NULL).
J'aimerais savoir si il n' y a pas un autre moyen de le faire autre que :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
select gen_id(NOM_GENERATEUR, 1)
from rdb$database
into :IDLIGNE ;


Merci de votre aide.