2

MySQL中是否有任何方法/方法,如果我删除某一行,下一行可能会被更新?为了说明我的意思,例如我这里有一张表:

+--------------+
|  id  | order |
+--------------+
|  115 |     1 |
|  116 |     2 |
|  117 |     3 |
|  118 |     1 |
|  119 |     2 |
|  120 |     6 |
|  121 |     7 |
|  122 |     8 |
+--------------+

我即将 drop id = 117,如果动作成功,我希望id = 118将其顺序从 1 变为 3 ,这是当前的 drop 顺序id = 117。然后让id = 119订单 4,然后id = 120到 5,依此类推。

我这样做是因为我的 PHP 程序中有某种排序行。

4

2 回答 2

1

在您的情况下,您将必须完全重新填充订单列,因为如果您删除行 id 118 或 119,则需要更改 118,119,120 等直到表末尾

 update order1,(select @rownum:=0)dummy set order1 = 
(@rownum =@rownum+1);

所以在这种情况下,如果你删除 118

Delete from YourTable where id = 118

运行上面的更新脚本,它可以工作

于 2012-05-24T11:02:14.383 回答
0

你需要有 MySQL 5+。从 MySQL 5 开始,我们有了触发器。触发器是在特定表上发生插入、更新或删除操作时触发或执行的程序。因此,您可以创建一个“ BEFORE”“ DELETE”触发器,您可以在同一个表上打开一个触发器,该触发器将在where表示已删除行数据表(称为魔术表)cursor之后选择具有 ID 的行。然后是简单地发出所需的命令来更新其中的相关行的情况。OLD.idOLDUPDATE

您可以将删除的行数据称为OLD.col_name. 在一个INSERTUPDATE触发器中,您还可以访问NEW.col_name以引用插入的数据。只有在UPDATE触发器中,您才能同时访问 theNEWOLDmagic 表。

链接: MySQL 触发 游标

于 2012-05-24T04:25:41.370 回答