Andrew> This is really a general SQL problem rather than anything to do Andrew> with Zope/ZSQL. So ZSQL methods don't provide any special syntactic sugar other than <dtml-sqlvar>? Andrew> Then do a select nextval('whatever'); to get the next id which Andrew> can then be used for the inserts. Thanks, I'll check it out. This seems (naively) like it would be a race to me though. Let's say I do this: insert into phone ( ... ) values ( ... ); The new row in phone got a unique id (I do use the serial type for my primary keys). Now, I need the id that row got to use in another insert. If I do something like: insert into contact ( ... phone, ... ) values ( ... (select currval(phone_id_seq)), ... ); That will get the id of the record I just inserted assuming someone else didn't sneak in and insert another row in the phone table before I queried phone_id_seq. Or were you suggesting I do something like: <some dtml assignment ... select nextval(phone_id_seq); ...> insert into phone ( id, ... ) values ( <value retrieved above> ... ); If so, how do I capture the value of nextval(...) within the ZSQL method? Thx, -- Skip Montanaro - skip@pobox.com http://www.mojam.com/ http://www.musi-cal.com/