[Zope] More Z SQL head bashing...
Daniel.Weber@SEMATECH.Org
Daniel.Weber@SEMATECH.Org
Tue, 14 Mar 2000 11:37:07 -0600
I had a similar problem I just puzzled through, though I'm pretty new and don't
know the right ways yet :-)
What I did was create another DSQl query (sql_newID) that queried for the new ID
(select max(ID+1) as newID from table) and another sql_exist( select count
*....) then I used this result, but it had to be within a <dtml-in > tag...
<dtml-in sql_exist>
<dtml-if "exist > 0">
<dtml-in sql_newID>
insert into table (ID, name) values (<dtml-var newID>, <dtml-sqlvar
name...>
</dtml-in>
</dtml-if>
</dtml-in>
This worked because I knew the sql_newID and sql_exist will only return a single
value, so the loop only iterates once. I've never seen the <dtml-var
sqldelimiter>, though, so I don't know what it does....
Maybe this will help.....
>
> Well, further to my earlier SQL post, here's the code I'm
> trying to encapsulate, but it doesn't work
> ;-)
> The problem is one of getting a unique, integer, id from
> MySQL to use as a primary key for an
> INSERT. And no, an AUTO_INCREMENT column won't help here 'cos
> I need to know what the number is
> before I do the insert (it generates a reference number,
> which is used as the primary key, and needs
> to be given back to the person doing the submission...)
>
> Anyway, here's the Z SQL Method Code which goes into a MySQL
> DB connection:
>
> SELECT COUNT(*) as exist FROM sequences WHERE
> sequence=<dtml-sqlvar name type=string>
> <dtml-var sql_delimiter>
> <dtml-if "exist==0">
> INSERT INTO sequences SET sequence=<dtml-sqlvar name
> type=string>, n=0
> </dtml-if>
> <dtml-var sql_delimiter>
> UPDATE sequences SET n=LAST_INSERT_ID(n+1) WHERE
> sequence=<dtml-sqlvar name type=string>
> <dtml-var sql_delimiter>
> SELECT LAST_INSERT_ID() as number
>
> When I try to test the method, I get a NameError for exists,
> which I presume is coming from the
> dtml-if. Any idea what I'm doing wrong or other ways of
> solving this problem?
>
> cheers,
>
> Chris
>
> _______________________________________________
> 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 )
>