[Zope] transaction control from Zope to Postgresql?

Farrell, Troy troy.farrell@wcg.com
Fri, 8 Jun 2001 11:32:31 -0500


What DA are you using?  I use PoPy and ZPoPyDA.  It appears (I haven't
verified it) that it rolls back all the ZSQLMethods executed between
pageviews.

Troy

-----Original Message-----
From: Reinoud van Leeuwen [mailto:reinoud@xs4all.nl]
Sent: Friday, June 08, 2001 6:40 AM
To: zope@zope.org
Subject: [Zope] transaction control from Zope to Postgresql?


Hello world,

I am in need for a way to explicitely contral transaction behaviour for a 
group of inserts in a postgresql database. The DTML script I use first 
inserts a header record and after that some detail records. The postgresql 
function that does the inserts might return an errorstring. So I tried the 
following code (simplified for readability)

<dtml-try>
  <dtml-call "sql_to_insert_head_record (some_parameters)">

  <dtml-in "a_loop_over_detail_lines">
    <dtml-if "check_detail_line">
      <dtml-raise required_attribute_missing> errormessage </dtml-raise>
    </dtml-if>

    <dtml-call "sql_to_insert_detail_line">
    <dtml-if "check_returncode">
      <dtml-raise inserterror> error inserting! </dtml-raise>
    </dtml-if>
  </dtml-in>

<dtml-except>
 insert failed (error: <dtml-var error_value>)
<dtml-else>
  object added to database
</dtml-try>

What I would like to do is that all the SQL executed between dtml-try and 
dtml-except is rolled back when the exception is raised. I tried 
sending "begin" and "rollback" to the database, but that does not work 
because Zope sends some transaction control by itself.
I tried getting get_transaction().begin() and get_transaction().abort() to 
work, but I cannot reach that function from dtml not python script. 
Anyone has some clues to spare?

Have a nice weekend,
Reinoud


_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )