Two actions in one ZSQL method = one transaction?

"Ken Winter" <[email protected]> Wed, 13 Jun 2007 21:11:08 -0400
Newsgroups gmane.comp.web.zope.database
Message-ID <013501c7ae20$e426c100$6703a8c0@KenIBM>
I have a question (stated in three different ways) about the following ZSQL
method:  

1.  Will it *always* return the person_id of the person that it just
inserted?
2.  Will it do this even if another user inserted another person just in
between the two SQL actions in this ZSQL method?
3.  In other words: Does a ZSQL method initiate a database transaction, so
that no other user can inset another record between the two actions in this
ZSQL method?

Here's the ZSQL method:

<dtml-comment>
  title: Method to add a Person
 	and return the id of the Person just created
  connection_id: dhatabase
  arguments:
	first_name
	middle_names  
	last_name
</dtml-comment>

insert into person (first_name, middle_names, last_name)
	values (
		<dtml-sqlvar first_name type="string">,
		<dtml-sqlvar middle_names type="string">,
		<dtml-sqlvar last_name type="string">
	);

select person_id from person where person_id = (select max(person_id) from
person);

~ TIA
~ Ken