Jean-François wrote:
> My question was not really specific to any database backend (aggree
> that probably all database system, including Rdb can start a
> transaction implicitly, inclugind Rdb). But as I have noticed that a
> method start_transaction_sql() exist I have expect that this method
> was used.

It is. But it used in only one place: when Django creates a script with 
DDL operators for database creation. I can even guess the reason for it. 
Historically Django was wrapping all "ALTER TABLE"s in a single BEGIN; 
.. COMMIT; block. Contrary to common disbelief It works as expected in 
PostgreSQL. In MySQL it doesn't work but also doesn't do any harm. And 
when Oracle backend came by I think it was failing on this thing. This 
is why Oracle is the only backend that overrides start_transaction_sql() 
to make it an empty string instead of 'BEGIN;'.

> So  to not commit, even a read only transaction, may introduced hand
> in a multi-processes architecture.

Ah... Got it. But it's not a problem in Django because each connection 
is closed altogether and thus rollbacked at the end of each request.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to