[PostgreSQL] - Recup l'id du dernier enregistrement dans ma fct

- Recup l'id du dernier enregistrement dans ma fct [PostgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 14-01-2004 à 01:40:12    

Bonjour,  
 
voila j'ai une fonction qui me sert a inserer un nouveau client dans la base de données que j'apelle directement via un prog VB, sans passer par un trigger.
 
 
La voila  

Code :
  1. /*****************************************************************************
  2. ** Déclaration des variables
  3. */
  4. DECLARE
  5. /* Arguments reçu
  6. --------------------------------------------------------------------*/
  7. v_nom alias for $1;
  8. v_prenom alias for $2;
  9. v_rue alias for $3;
  10. v_num_rue alias for $4;
  11. v_num_boite alias for $5;
  12. v_pays_id alias for $6;
  13. v_ville_id alias for $7;
  14. v_cp_id alias for $8;
  15. v_sexe alias for $9;
  16. v_datenaiss alias for $10;
  17. v_telephone alias for $11;
  18. v_gsm alias for $12;
  19. v_email alias for $13;
  20. /* Autre variable utilisée dans le code
  21. --------------------------------------------------------------------*/
  22. v_verif_client record;
  23. /*****************************************************************************
  24. ** Début du code
  25. */
  26. BEGIN
  27. -- Vérification de l`existance du client dans la DB.
  28. SELECT COUNT(*) AS nbcli into v_verif_client FROM clients
  29. WHERE lower(clients.nom) = lower(v_nom)
  30. AND lower(clients.prenom) = lower(v_prenom);
  31. IF v_verif_client.nbcli > 0 THEN
  32.     -- Le client existe, on s´arrete la.
  33.     return 0;
  34. ELSE
  35.     -- Le client n´existe pas, on continue.
  36.     -- Insertion de l´adresse
  37.     INSERT INTO 
  38.         adresses 
  39.         (
  40.             id_adresse,
  41.             id_cp,
  42.             rue,
  43.             numero,
  44.             num_boite
  45.         )
  46.        
  47.         VALUES
  48.         (
  49.             NEXTVAL(''seq_adresses''),
  50.             v_cp_id,
  51.             v_rue,
  52.             v_num_rue,
  53.             v_num_boite
  54.         );
  55.    
  56.     -- Insertion du client
  57.     INSERT INTO
  58.         clients
  59.         (
  60.             id_client,
  61.             id_adresse,
  62.             nom,
  63.             prenom,
  64.             sexe,
  65.             date_naiss,
  66.             email,
  67.             telephone,
  68.             gsm,
  69.             mauvais_client
  70.         )
  71.         VALUES
  72.         (
  73.             NEXTVAL(''seq_clients''),
  74.             1, -- A changer en dernier ID adresses
  75.             v_nom,
  76.             v_prenom,
  77.             v_sexe,
  78.             v_datenaiss,
  79.             v_email,
  80.             v_telephone,
  81.             v_gsm,
  82.             false
  83.         );
  84.     -- Valeur de retour
  85.     RETURN 1; -- A changer en l´id du client inséré
  86. END IF;
  87. END;


 
VOila desolé mais chui un gros newbie en pgsql. J'vois pas trop comment faire sans les variable NEW/OLD, mais j'vois pas trop comment faire pour utiliser un trigger dans mon cas; Vu que je dois directement appeler cette fonction pour inserer un client...  
 
Comment faire?
 
Merci


Message édité par _maximus_ le 14-01-2004 à 01:41:40

---------------
Ptit con de goret je t'emmerde ^_^
Reply

Marsh Posté le 14-01-2004 à 01:40:12   

Reply

Marsh Posté le 14-01-2004 à 13:23:06    

C'est si nul que ca ma question ??? :(


---------------
Ptit con de goret je t'emmerde ^_^
Reply

Marsh Posté le 14-01-2004 à 14:52:00    

Code :
  1. -- Insertion du client
  2. BEGIN
  3. NOCLIENT = NEXTVAL(''seq_clients'');
  4.       INSERT INTO
  5.           clients 
  6.           (
  7.               id_client,
  8.               id_adresse,
  9.               nom,
  10.               prenom,
  11.               sexe,
  12.               date_naiss,
  13.               email,
  14.               telephone,
  15.               gsm,
  16.               mauvais_client
  17.           )
  18.  
  19.           VALUES
  20.           (
  21. NOCLIENT              ,
  22.               1, -- A changer en dernier ID adresses
  23.               v_nom,
  24.               v_prenom,
  25.               v_sexe,
  26.               v_datenaiss,
  27.               v_email,
  28.               v_telephone,
  29.               v_gsm,
  30.               false
  31.           );
  32. COMMIT;
  33.       -- Valeur de retour
  34. RETURN NOCLIENT; -- A changer en l´id du client inséré
  35.   END IF;
  36.  
  37.   END;


 
J'ai collé à gauche ce que j'ai changé.
 
La syntaxe n'est peut-être pas exacte (il doit falloir déclarer NOCLIENT je pense) mais l'esprit est là.


Message édité par nraynaud le 14-01-2004 à 14:52:24

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-01-2004 à 15:16:10    

Salut, ah ben c'est pas con ton idee, j'aurais dut y penser :)
J'vais essayer, mais en principe ca devrait aller.
 
Merci beaucoup :)
 
:hello:


---------------
Ptit con de goret je t'emmerde ^_^
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed