MySQL中是否有任何方法/方法,如果我删除某一行,下一行可能会更新?为了说明我的意思,比如我在这里有一张表:
+--------------+
| id | order |
+--------------+
| 115 | 1 |
| 116 | 2 |
| 117 | 3 |
| 118 | 1 |
| 119 | 2 |
| 120 | 6 |
| 121 | 7 |
| 122 | 8 |
+--------------+
我即将放弃id = 117
,如果操作成功,我希望id = 118
将其订单从1开始为3,这是当前删除id = 117
的顺序。然后让id = 119
订购4,然后id = 120
改为5,依此类推。
我这样做是因为我的PHP程序中有一些排序行。
答案 0 :(得分: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
运行上面的更新脚本,它可以正常运行
答案 1 :(得分:0)
你需要拥有MySQL 5+。从MySQL 5开始,我们有触发器。触发器是在特定表上发生插入,更新或删除操作时触发或执行的程序。因此,您可以创建一个“BEFORE
”“DELETE
”触发器,您可以在同一个表上打开cursor
,在OLD.id
所在的{OLD
之后选择带有ID的行1}}表示已删除的行数据表(称为魔术表)。然后,只需发出所需的UPDATE
命令即可更新其中的相关行。
您可以将已删除的行数据称为OLD.col_name
。在INSERT
或UPDATE
触发器中,您还可以访问NEW.col_name
以引用插入的数据。只有在UPDATE
触发器中,您才能访问NEW
和OLD
魔术表。