更新mysql表.一个字段= old_value - 1

Den*_*zen 3 php mysql sql-delete

我需要做的是: - 从表中删除一个条目formfields - 使用排序更新每个字段>(删除字段的排序) - 将更新字段的顺序设置为当前值减1(例如,如果字段上的当前排序是8,那么它应该设置为7).

这可能在一个查询中?或者我该如何实现?

Chu*_*ess 8

您可以设置一个事务来一次完成所有操作.

鉴于下表:

CREATE TABLE `formfields` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `order_no` int(11) NOT NULL,
  PRIMARY KEY (`id`)
);
Run Code Online (Sandbox Code Playgroud)

您可以执行以下操作:

START TRANSACTION;
DELETE FROM formfields WHERE order_no = {YOUR_NUM};
UPDATE formfields SET order_no = order_no - 1 WHERE order_no > {YOUR_NUM};
COMMIT;
Run Code Online (Sandbox Code Playgroud)