Wie nutze ich Transaktionen in Firebird?
In MS SQL-Server, kann ich problemlos mehrere insert-Anweisungen in einer Transaktion, etwa so:
begin tran
insert into mytable values (1, 2, 3)
insert into mytable values (4, 5, 6)
commit tran
Ich versuche das gleiche zu tun, im Firebird, aber ich kann nicht herausfinden, die syntax. Sie googeln für "Firebird transaction-syntax" gibt nichts nützlich. Ich habe genug gefunden, um zu wissen, dass Sie die Transaktion unterstützen existiert, aber keine Beispiele wie man es richtig.
So, ich denke, ich kann genauso gut Fragen Sie hier. Weiß jemand, wie schreibt man eine Transaktion über mehrere Einsätze für eine Firebird-Datenbank?
Wie gesagt, von anderen, Firebird arbeiten Sie immer innerhalb von Transaktionen. Es gibt verschiedene Transaktions-isolations, aber wahrscheinlich sind Sie vor eine tool-Funktion, die Kraft der commit nach jeder Anweisung. Ich würde versuchen, in ISQL oder FlameRobin. HTH (;
InformationsquelleAutor Mason Wheeler | 2011-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ergänzend zu @Allan ' s Antwort (die ich von Ihnen positiv bewertet werden, BTW), hier einige weitere Informationen.
Wenn Sie
begin tran
im SQL-Server ist, bedeutet es nicht, dass Sie starten Sie die Transaktion nun. Sie sind bereits in der Transaktion, da Sie mit der Datenbank verbunden sind! Wasbegin tran
wirklich tut, ist deaktivieren Sie die "auto-commit bei jedem statement", was der default-Zustand in SQL-Server (sofern nicht anders angegeben).Bzw.
commit tran
verpflichtet und stellt die Verbindung zu "auto-commit bei jedem statement" Staat.In eine Datenbank, wenn Sie verbunden sind, Sie sind bereits in der Transaktion. Dies ist, wie Datenbanken. Zum Beispiel, Firebird, führen Sie eine commit-oder rollback-wenn auch nur ran eine Abfrage.
Einige Datenbanken und die Verbindung libs, in der anderen hand, lassen Sie die "auto-commit bei jedem statement" Zustand der Verbindung, das ist, was SQL-Server zu tun. Wie nützlich dieses feature auch sein mag, es ist nicht sehr didaktische und führen Anfänger denken, Sie seien "nicht in einer Transaktion".
Ich meinte die echte ACID-konforme Datenbanken 🙂
Yeah! Weißt du... Jemand hatte zu erklären... und ich konnte nicht widerstehen. 😀
InformationsquelleAutor Adrian Carneiro
Firebird immer die Transaktionen verwendet. Die Transaktion wird gestartet, sobald Sie eine änderung in der Datenbank und bleibt offen für diese Sitzung verwendet, bis Sie zu Begehen. Ihren code verwenden, ist es einfach:
Vielleicht ist deine Verbindung/lib eingestellt ist auto-commit? Werfen Sie einen Blick auf meine Antwort.
Ich weiß nicht, dieses Instrument, so weiß ich es nicht. Haben Sie versucht, läuft dieser code mit einem anderen tool? Sagen wir, die Versand-mit-firebird-Kommando-Zeile ISQL? Außerdem gibt es eine personal-version von IBExpert, die ist einfach toll. Ich denke, dass Sie Werkzeug isolieren Sie von den Konzepten hier beschrieben.
versuchen Sie, das zu tun, isql - wenn Sie mit Firebird Maestro kann es automaticlly commit nach jeder sql-Anweisung, damit Sie sehen können, keine Wirkung. forums.devshed.com/firebird-sql-development-61/...
ow und überprüfen Sie die Transaktion isolation level!
InformationsquelleAutor Allan
Da FB 2.5 es ist möglich, den start einer neuen Transaktion aus dem inneren der aktuellen.
http://www.firebirdsql.org/rlsnotesh/rlsnotes25.html#rnfb25-psql-auton
danke für den Hinweis, habe ich geändert, der Satz. Hoffe jetzt ist es klarer
es ist jetzt besser. Aber wie ich jetzt sehe, ist es auch wichtig zu verstehen, die innerhalb einer PSQL-Modul Artikel. Normalerweise Transaktionen zugegriffen werden, die innerhalb einer gespeicherten Prozedur oder einem trigger.
InformationsquelleAutor Fr0sT
Wenn Firebird gibt es keine Notwendigkeit für zusätzliche syntax über
Unten, die ich-screenshot von Firebird-Sitzung zeigt, wie es funktioniert.
Klicken Sie auf um einen Blick zu nehmen
ohh,Sorry dafür, und danke für das informieren! @Wolf
Ich aktualisiere einfach mein screenshot bitte schauen Sie,ob es hilfreich ist oder nicht
der screenshot ist jetzt viel besser, vielleicht ist es sogar besser Einbettung in die Antwort...
...vor dem einbetten, wird das Bild verkleinert und die Breite. Die Bildlaufleiste auf der rechten Seite und die schwarze leere zwischen Ihr und der text ist nicht wichtig.
InformationsquelleAutor Amy