MySQL中是否有任何方法/方法,如果我删除某一行,下一行可能会更新?为了说明我的意思,例如,假设我这里有一个表格:
+--------------+
| id | order |
+--------------+
| 115 | 1 |
| 116 | 2 |
| 117 | 3 |
| 118 | 1 |
| 119 | 2 |
| 120 | 6 |
| 121 | 7 |
| 122 | 8 |
+--------------+
我即将放弃id = 117
,如果操作成功,我希望id = 118
将其顺序从 3 从 1 到现在的顺序 id = 117
.然后使id = 119
具有顺序 4,然后id = 120
到 5,依此类推。
我这样做是因为我的 PHP 程序中有某种排序行。
在您的情况下,您必须完全重新填充订单列,因为如果您删除行 ID 118 或 119,则需要更改 118,119,120 等,直到表的末尾
update order1,(select @rownum:=0)dummy set order1 =
(@rownum =@rownum+1);
所以在这种情况下,如果你删除 118
Delete from YourTable where id = 118
运行上面的更新脚本,它可以工作
你需要
有MySQL 5+。从MySQL 5开始,我们有触发器。触发器是在特定表上发生插入、更新或删除操作时触发或执行的程序。因此,您可以创建一个" BEFORE
" DELETE
" 触发器,您可以在其中打开同一表上的cursor
,该将选择OLD.id
之后带有 ID 的行,其中 OLD
表示已删除的行数据表(称为魔术表)。然后,只需发出所需的UPDATE
命令即可更新其中的相关行。
您可以将已删除的行数据称为OLD.col_name
。在INSERT
或UPDATE
触发器中,您还可以访问NEW.col_name
以引用插入的数据。只有在UPDATE
触发器中,您才能访问NEW
和OLD
魔法表。
链接:MySQL 触发器游标