From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Handling transactions? Date: Tue, 28 Jul 2015 08:45:48 +0200 Organization: cbb software GmbH Message-ID: References: <6b5c318e-430d-4950-9762-e0ecdaa0ac9a@googlegroups.com> <9976ca19-a558-4f4e-80d3-a9b37ee07326@googlegroups.com> <40c8dba8-85e9-42e7-8316-96c976531ab4@googlegroups.com> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: 5CNUwuQ0q1vZOSDFkeKrYQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:27066 Date: 2015-07-28T08:45:48+02:00 List-Id: On Mon, 27 Jul 2015 19:10:09 -0500, Randy Brukardt wrote: > This is typically used in a block: > > declare > My_Lock : Lock; -- Gets lock. > begin > -- Do operations needing the lock. > end; -- The lock is freed here, no matter how this block is completed. > > I suspect that you could use a similar pattern for transactions (although > I've never tried it). Yes, the way I did it was similar: declare My_Transaction : Transaction (...); begin -- Do operations Commit (My_Transaction); end; The transaction object has the flag Committed set by Commit. Upon an exception the flag remains not set and Finalize rolls back. Without an exception the flag is set and Finalize commits. The problem with this approach is that you cannot propagate exceptions on errors from Finalize when commit or rollback fails. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de