I'd suggest using a stored procedure with a transaction and do it in 
the
database. CF is rather aggressive in how it locks the db, and this can 
lead
to performance problems if the db gets a lot of use. SP's give you a
performance boost, and aren't that hard to do, especially once you have 
the
SQL written.

And rather than do your increment in a function call, you could do it 
in
SQL:    select buildcount + 1 from bbstat where id = #id# and buildtime=
#buildtime#


   Jeff Polaski
   Manager, Web Services
   Research & Graduate Studies
   University California, Irvine 


-----Original Message-----
From: Phillip Broussard [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, February 19, 2002 12:03 PM
To: CF-Talk
Subject: Best way to do this query


Sorry to ask but I have a dead brain right now. (I hate it when I feel
dumb.)

X¿x
~~~
  
I need to check the database to see if a record is there. 
If it's there then increment it by one, otherwise add the record. 
If two people hit it at the right time I may get two records. What 
should I
do to prevent this? 
This is what the code would look like.

<cfquery name="stat_check" datasource="#application.datasource#">
        select * from bbstat where id = #id# and buildtime = #buildtime#
</cfquery>

<cfif stat_check.RecordCount eq 1>
        <cfset buildcount = IncrementValue(buildcount)>
        <cfquery name="increment" datasource="#application.datasource#">
                update bbstat
                set buildcount=#IncrementValue(buildcount)#
                where id=#id#
        </cfquery>
<cfelse>
        <cfquery name="add" datasource="#application.datasource#">
                insert into bbstat 
                (id,buildcount) 
                values (#id#,1)
        </cfquery>

</cfif> 

Phillip Broussard
Tracker Marine Group
417-873-5957



______________________________________________________________________
Why Share?
  Dedicated Win 2000 Server · PIII 800 / 256 MB RAM / 40 GB HD / 20 GB MO/XFER
  Instant Activation · $99/Month · Free Setup
  http://www.pennyhost.com/redirect.cfm?adcode=coldfusionc
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to