我有一个名为 list
的列,它在我的订单中被(在 MYSQL 查询中)使用,列表中是数字:(例如 1 到 20)
然后使用 MYSQL order by list
ASC 输出此列表 - 但是,当我在后端使用 Jquery 拖放 UI 列表更新我的列表时,它应该更新列表前端。
我的问题是我的列表顺序有时会与其他行冲突,因为列表中可能有两到三行的值为 1 因此当我的订单更新时,我想知道如何通过 +1 < 更新其他行strong>仅当行 >= 给定的订单号时
我不想让该列成为主要列,因为我的目标不是使 list
列唯一,这是因为有多个类别 - 在每个类别中它们都是从 1 开始 - 因此,如果我将其设置为唯一,则会导致错误,因为在不同的类别中有多个 1。
我问了一个 friend ,他说我可以使用触发器函数尝试 PL/SQL,但这对我来说是新的基础——我不完全理解这种语言,想知道是否有人可以帮助我做我想做的事情使用 MYSQL 甚至 PL/SQL。
这是我目前所拥有的:
<?php
$project = mysql_real_escape_string(stripslashes($_POST['pid']));
$category = mysql_real_escape_string(stripslashes($_POST['cat']));
$order = mysql_real_escape_string(stripslashes($_POST['order']));
// need to do update the moved result (list row) and update all conflicting rows by 1
mysql_query("UPDATE `projects` SET `cat`='$category',`list`='$order' WHERE `id`='$project'")or die(mysql_query());
?>
结论:
我正在尝试更新一个非唯一列,以便为该单个类别提供唯一值。我不确定如何通过 +1 更新该类别中的所有行
最佳答案
@andrewsi 是对的,特别是我建议 order by list ASC, last_update DESC
所以在更新 list
的同一个查询中,你可以为 last_update< 添加时间戳
因此您将不需要使用触发器或任何其他更新。
关于php - 列表更新 - 行冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890135/