Re: Help with logic :(
| From: | aaronjw at martekbiz dot com | Date: | Tue, 11 Oct 2005 13:54:50 +0000 |
| Subject: | Re: Help with logic :( | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-223895@lists.php.net to get a copy of this message | ||
Hi Richard,
Ok... I do already have a Unique index on the column but this process is
something that I cannot echo out the error code to the user. The code is
generated on the fly when an order an is placed so you can see... I can't
echo out the error to the customer.
Can I do an if statement IF an error is returned to try generatre another
randon code and keep going until one is available? I can do this all
intenrally without the customer knowing/seeing anything?
Hope I am making some sense. Not trying to confuse the issue.
Thanks. Appreciate your thoughts.
Aaron
> On Mon, October 10, 2005 3:24 pm, Dan McCullough wrote:
>> create a function to check if the rndnumber=couponcode row count = 0
>> if not then redo rndnumber if it does = 0 then insert rndnumber
>
> Noooooooooooooooooooooooooooo!
>
> You are creating a RACE CONDITION in which ONE user might generate a
> 'valid' code, and ANOTHER user might generate a 'valid' code AT THE
> SAME TIME, and then they BOTH get the same coupon code.
>
> The probability of this is very very very low, but still NOT zero.
>
> And it's the kind of thing that won't show up in testing, but sure as
> God made little green apples, it WILL happen at the worst possible
> time after you "go live"
>
> The database engine has a *TON* of code in it to avoid this kind of
> Bad Thing happening.
>
> Use it.
>
> create a UNIQUE INDEX on the column that needs to be unique.
>
> Trap the INSERT error.
>
> --
> Like Music?
> http://l-i-e.com/artists.htm
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>