100% reliable.

On Wed, Jan 27, 2016 at 11:52 AM, Brian Knott <bkn...@jbk.com.au> wrote:

> Returning the generated key is what I'm after.
>
> This code was originally written about 15 years ago using CF 4.5 and SQL
> Server 2000. Back then the ID could not be returned.  Time to update the
> inserts.
>
> Does anyone know how reliable  the GENERATEKEY function is.
>
> Brian
>
>
>
> ------------------------------
> *From*: "Paul Kukiel" <kuki...@gmail.com>
> *Sent*: Wednesday, 27 January 2016 10:29 AM
> *To*: cfaussie@googlegroups.com
> *Subject*: Re: [cfaussie] SQL identity issue
>
> Same as Mikes but using the inbuilt functions and avoiding @@identity
>
> <cfquery datasource="#DSN#" result="myResult">
> INSERT INTO MyTable (col1)
> VALUES ('col1')
> </cfquery>
>
> <!--- Tag based output --->
> <cfoutput>Inserted ID is: #myResult["GENERATEDKEY"]#</cfoutput>
>
>
>
> On Wed, Jan 27, 2016 at 11:06 AM, Mark King <m...@ampersand.net.au> wrote:
>>
>> Hi Brian.
>>
>>
>>
>> Well first of all if you are using SQL Server try this to get the new ID
>> in the same transaction rather than doing another query;
>>
>>
>>
>> <cfquery datasource="[datasource]" username="[username]"
>> password="[password]" name="qry">
>>
>>     SET NOCOUNT ON
>>
>>     INSERT INTO orders
>>
>>                  (
>>
>>                  ** Your order fields **
>>
>>                  )
>>
>>     VALUES
>>
>>                 (
>>
>> ** Your data **
>>
>>                  )
>>
>>     SELECT @@Identity AS orderID
>>
>>     SET NOCOUNT OFF
>>
>> </cfquery>
>>
>> <cfset attributes.orderID=qry.orderID>
>>
>>
>>
>> I am not sure what you use the unique number for other than for something
>> to put onto the receipts or something?
>>
>>
>>
>> However, if you want to obscure the ID in a link you could encrypt it. I
>> have done this is the past where I sent users and email but didn’t want
>> them to be able to just increment the link to see someone else’s order,
>> e.g. displayorder.cfm?orderID=1234
>>
>>
>>
>> So I did this:
>>
>>
>>
>> <cfset myKey="[** your generated AES key **]">
>>
>> <cfset
>> AESorderID=urlencodedformat(encrypt(attributes.orderID,myKey,"AES"))>
>>
>>
>>
>> Because the orderID is unique the encrypted value should be unique as
>> well.
>>
>>
>>
>> See
>> http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c2f.html
>>
>>
>>
>> I am not sure if that is what you actually wanted but I hope it helps!
>>
>>
>>
>>
>>
>> *From:* cfaussie@googlegroups.com [mailto:cfaussie@googlegroups.com] *On
>> Behalf Of *Brian Knott
>> *Sent:* Wednesday, 27 January 2016 9:31 AM
>> *To:* cfaussie@googlegroups.com
>> *Subject:* [cfaussie] SQL identity issue
>>
>>
>>
>> Hi everyone.
>>
>>
>>
>> I have an issue with inserting orders into a database.  What I currently
>> do is create a random number and insert that number into the database when
>> an order is inserted.  I then query the database to get the order number
>> (unique ID generated by SQL Server).  Using this order number I then insert
>> the items into an item table.
>>
>>
>>
>> The issue is that its possible for 2 orders to end up with the same
>> unique number, this is because the random function is not actually that
>> random.  If two people are submitting orders at the same time, they get the
>> same random number.  This means that all of the items ordered go to one
>> customer, and the other customer gets no items.
>>
>>
>>
>> Current code for the random number is
>>
>>
>>
>> <cfset session.order.uniquenumber = RandRange(1,99999999) + now()>
>>
>>
>>
>> Is there a more reliable way of doing this?
>>
>>
>>
>> Brian
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "cfaussie" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to cfaussie+unsubscr...@googlegroups.com.
>> To post to this group, send email to cfaussie@googlegroups.com.
>> Visit this group at https://groups.google.com/group/cfaussie.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "cfaussie" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to cfaussie+unsubscr...@googlegroups.com.
>> To post to this group, send email to cfaussie@googlegroups.com.
>> Visit this group at https://groups.google.com/group/cfaussie.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> Paul Kukiel
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "cfaussie" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to cfaussie+unsubscr...@googlegroups.com.
> To post to this group, send email to cfaussie@googlegroups.com.
> Visit this group at https://groups.google.com/group/cfaussie.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "cfaussie" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to cfaussie+unsubscr...@googlegroups.com.
> To post to this group, send email to cfaussie@googlegroups.com.
> Visit this group at https://groups.google.com/group/cfaussie.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Paul Kukiel

-- 
You received this message because you are subscribed to the Google Groups 
"cfaussie" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cfaussie+unsubscr...@googlegroups.com.
To post to this group, send email to cfaussie@googlegroups.com.
Visit this group at https://groups.google.com/group/cfaussie.
For more options, visit https://groups.google.com/d/optout.

Reply via email to