|
Posted by John Sjouken on 05/09/05 21:21
The only things you can do is ask them if they are willing to make the row
"UIQUE".
An other thing is using a multification with timestamp and one of the inputs
which will change the mast, use MD5-hash with it multiply it and use it as
an unique field.
The only way to update this field is using the same time-stamp AND the same
input
--
John, PE1DSR
http://ham.jen-gen.com
"roger" <pageme@ntlworld.com> wrote in message
news:T_vfe.26191$5A3.24594@newsfe4-win.ntli.net...
> Its just the way the site is designed, i dont have any say on it. I just
> have to write an app to work with the existing site..
>
> "Oli Filth" <catch@olifilth.co.uk> wrote in message
> news:Ewsfe.22261$YF5.12348@newsfe5-win.ntli.net...
> > roger wrote:
> > > It cant be set to AutoIncement as it corresponds to the time the
product
> was
> > > updated..
> > > i have managed to do it using:
> > >
> > > $testid='1115571604';
> > > $unique_result='1';
> > > while($unique_result)
> > > {
> > > $rs= mysql_query("Select ID from Items where ID =
> > > '$testid'");
> > > if (mysql_fetch_array($rs))
> > > {
> > > $testid++;
> > > }
> > > else $unique_result = '0';
> > > }
> > > echo "$testid";
> > >
> > > but how can i lock it so no one straight after can grab the same value
> > > during the time it takes to execute the rest of the code following
this.
> >
> > Why do you need it to correspond *uniquely* to the creation time? Like I
> > said previously, if you need a unique ID, then use the autoincrement
> > feature. If you need a timestamp, then store the timestamp as well. It's
> > considered bad design practice to have one database field serving two
> > purposes, not least because it involves kludges like this.
> >
> > What's more, by changing the ID field of records on UPDATEs, you're
> > destroying the relational aspect of the database, because you can't use
> > this ID value as a foreign key in other tables (i.e. you can't identify
> > this row from other tables).
> >
> > But if you still want to do this, then use a table lock, i.e.
> >
> > LOCK TABLE table_name WRITE;
> >
> > ...
> >
> > UNLOCK TABLES;
> >
> >
> > P.S. It would be much more efficient if you treat the ID value in your
> > example above as an integer rather than a string.
> >
> > --
> > Oli
>
>
Navigation:
[Reply to this message]
|