[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 )