Re: Help with logic :(

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dan McCullough wrote:
Yes I believe that is what Richard was saying about "Trap the INSERT
error", you should get an error back from the database about having a
problem with the insert instead of showing that error you will want to
add some logic that when that error occurs you simply generate another
number.

I concur! the OP has the idea :-)


On 10/11/05, aaronjw@xxxxxxxxxxxxx <aaronjw@xxxxxxxxxxxxx> wrote:

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






--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux