Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: transaktionen und rückgabewerte

  1. #1
    Crypi ist offline Erfahrener Benutzer
    Registriert seit
    28.12.2005
    Ort
    Hamburg
    Beiträge
    127

    Standard transaktionen und rückgabewerte

    HI Leute,

    ich programmier mit PHP und pg und versuch nun grad eine Transaktion durchzuführen, die zuerst etwas inserted und dann einen select macht um die neue Laufendenummer zurückzugeben.

    "BEGIN;
    insert into a (..)values(...);
    select currval(a_sequenz);
    COMMIT;"

    wollte nun das result weiterverwenden... klappt nur nicht, wenn ich das Begin, Commit entferne funktionierts wieder gut. Woran könnte es liegen das das nicht mehr klappt?

    Danek für eure Mühe!
    Crypi

  2. #2
    fristo ist offline Super-Moderator
    Registriert seit
    08.12.2005
    Ort
    Raum Frankfurt/Main
    Beiträge
    668

    Standard Re: transaktionen und rückgabewerte

    Zitat Zitat von Crypi
    Woran könnte es liegen das das nicht mehr klappt?Crypi
    Ehrliche Antwort:
    Die hast Transaktionen und deren Zusamenhänge noch nicht richtig verstanden!

    Lösung:
    Führe den Befehl "select currval(a_sequenz);" nach der Transaktion aus. Das warum, solltest Du selbst herausfinden.


    Vielleicht hilft Dir dieser Link: http://www.postgresql.org/docs/books/pghandbuch.html.de


    mfg

    fristo

  3. #3
    Crypi ist offline Erfahrener Benutzer
    Registriert seit
    28.12.2005
    Ort
    Hamburg
    Beiträge
    127

    Standard

    Der Sinn steck doch darin zu garantieren, dass zwischen meinen Befehlen keine anderen ausgeführt werden oder nicht? Ich weiß dsa es klappt wenn ich den select nach das Kommit schreibe aber ist damit auch garantiert, das es wirklich die aktuelle Nummer ist?

    Crypi
    ps: den link kenne ich

  4. #4
    Avatar von Xandrian
    Xandrian ist gerade online Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    hi,

    mal ne dumme frage: du schreibst doch den datensatz in die datenbank => du hast alle infos und kannst den datensatz direkt wieder selektieren (stichwort: primary_key bzw. keys).

    wieso selektiert du nicht einfach die id des datensatzen und selektierst als WHERE kriterium nach den eingefügten werten?

    damit solltest du das problem umgehen, die richtige id erhalten und eine transaktion funktioniert auch (wobei die in deinem fall imo blödsinn ist).

    cu tb.
    pg-forum.de unterstützen? Meine Wunschliste


  5. #5
    fristo ist offline Super-Moderator
    Registriert seit
    08.12.2005
    Ort
    Raum Frankfurt/Main
    Beiträge
    668

    Standard

    Erkläre doch mal, wann Du "Laufendenummer" benötigst, während der Transaktion oder nach der Transaktion, und was Du mit "Laufendenummer" machst.



    mfg

    fristo

  6. #6
    Crypi ist offline Erfahrener Benutzer
    Registriert seit
    28.12.2005
    Ort
    Hamburg
    Beiträge
    127

    Standard

    @xandrian: deinen post versteh ich nciht, ich soll alle anderen attribute selecten?beziehst du dich auf meinen anderen eintrag?


    die laufendenummer wird beim insert erzeugt, diese soll dann zurück geliefert werden damit ich sie in meiner oberfläche(php) weiter verwenden kann. meine sorge ist, dass der unwahrscheinliche fall eintritt, dass nach meinem insert jemadn anders insertet und ich ne falsche laufendenummer zurück bekomme.

    Crypi

  7. #7
    Avatar von Xandrian
    Xandrian ist gerade online Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    hi,

    nein ich bin schon richtig

    du schreibt einen datensatz in die datenbank. dieser bekommt eine id die du weiter verwenden möchtest. da es ja u.u. probleme mit den curval geben könnte (wie du ja selbst geschrieben hast), was spricht dagegen, die id direkt aus der tabelle zu selektieren, auf die der insert geht? du machst also praktisch ein

    SELECT id FROM a WHERE ...

    und nimmst als WHERE die daten die du gerade eingegeben hast. dann sollte das doch auch gehen.

    jetzt verstanden was ich mein?

    cu tb

    btw: das buch gibt es auch hier im online shop... http://pg-forum.de/shop.php?id=251&a...sin=3826613376
    pg-forum.de unterstützen? Meine Wunschliste


  8. #8
    Crypi ist offline Erfahrener Benutzer
    Registriert seit
    28.12.2005
    Ort
    Hamburg
    Beiträge
    127

    Standard

    naja bedingt, könnte ja sein das genau die gleochen daten schon einmal eingegeben wurden... ok unwahrscheinlich aber wer weiß.

    warum geht denn das nicht? kannst du mir das erklären?

    Crypi

  9. #9
    Avatar von Xandrian
    Xandrian ist gerade online Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    was spricht eigentlich gehen folgende lösung (verfasst in pseudo code):

    Code:
    beginne transaktion;
    $new_id = SELECT nextval('sequenz');
    INSERT INTO a(...) VALUES($new_id, ...);
    ...
    COMMIT; bzw. ROLLBACK;
    
    {weiter arbeiten mit $new_id}
    und wech... cu tb.
    pg-forum.de unterstützen? Meine Wunschliste


  10. #10
    Crypi ist offline Erfahrener Benutzer
    Registriert seit
    28.12.2005
    Ort
    Hamburg
    Beiträge
    127

    Standard

    hab das jetzt anders gelöst.

    ich hab alles was die laufendenummer brauchte in eine Transaktion gepackt. werd jetzt in der oberfläche ohne sie auskommen.


    Danke für eure Hilfe!

    Crypi

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Transaktionen zugreifen
    Von Snappi im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 25.03.2009, 14:52
  2. Transaktionen loggen
    Von Snappi im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 02.03.2009, 11:42
  3. Frage Gibt es Probleme mit postGIS und Transaktionen
    Von BurnInHell im Forum PostGIS
    Antworten: 23
    Letzter Beitrag: 13.02.2009, 15:43
  4. PostgreSQL & Transaktionen
    Von dr.colossos im Forum Allgemeines
    Antworten: 6
    Letzter Beitrag: 08.02.2007, 17:17
  5. Problem mit Foreign Keys und Transaktionen
    Von abenstex im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 01.02.2007, 12:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum