I have a table in which the first column represents the order in which the
data in the rows will appear in an HTML table on a Web page. The column is
called "ordr" (to avoid conflict with the reserved keword "order"). This
column is a primary key, but the values are not auto-incremented, they are
assigned by hand at first and supposed to be revised by a PHP script. This
is where the problem comes in. Suppose I want to change the order of a
record with respect to the HTML table by changing the value of the "ordr"
column for that row. Suppose I have five rows:
1
2
3
4
5
And I want to move the row currently at ordr 4 to ordr 1.
Step 1. First, I can set the row with ordr 4 to ordr 0 to set it aside:
1
2
3
0
5
Step 2. Then I would raise each item's ordr value by 1 if it is >= 1 and <
4:
2
3
4
0
5
Step 3. Finally, I would change 0 to the desired target ordr value, 1:
2
3
4
1
5
But how can I accomplish step 2? It would seem at first as if the following
should work:
update table my_table set ordr = ordr + 1 where ordr >= 1 and ordr < 4;
But this results in an error. When MySQL tries to update the first row from
1 to 2, it causes a (temporary) duplication of the value 2 in this unique
(primary key) column.
How else am I supposed to do this?
Thanks!
Amittai Aviram
[EMAIL PROTECTED]
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php