我有很多物品。它们可以分组。当用户将对象“拖动”到组中时,我将记录插入到我的db
中INSERT INTO t1
(group_id, item_id, project_id, user_id)
VALUES
($groupID, $itemID, $projectID, $userID)
同一组中可以有多个对象,这些对象可以从一个组移动到另一个组。当我将对象移动到另一个组时,我不需要创建另一个记录,而只需要更新group_id。
编辑:
我想我需要做这样的事情:
table structure
t1.id
t1.group_id
t1.item_id
t1.project_id
t1.user_id
if ("SELECT id, group_id FROM t1
WHERE item_id = $itemID
AND project_id = $projectID
AND user_id = $userID")) {
// if found
UPDATE t1
SET group_id = $groupID
WHERE id = $ID
} else {
INSERT INTO t1
(group_id, item_id, project_id, user_id)
VALUES ($groupID, $itemID, $projectID, $userID)
答案 0 :(得分:1)
听起来你应该在从一个组移动到另一个组时只放置一个if语句来更新正在移动的对象。比方说,如果我从其初始(开始)空间中选择一个对象,我会添加insert语句。如果我正在移动已经分组到另一个组的对象,我会添加一个更新语句。最后,如果我完全从所有组中取出一个项目,我会发出一个删除语句,从表中删除该对象。
pseudo code
if object = new
{
INSERT INTO t1 (group_id, item_id, project_id, user_id)
VALUES ($groupID, $itemID, $projectID, $userID)
}
if object = group
}
UPDATE t1
SET group_id = $newgroupID
WHERE item_id = $itemID;
}
if object = banned
}
delete from t1 where item_id = $itemID
}
这个代码序列应放在您拖动对象的每个容器上,以便它可以检查正确的要求。
答案 1 :(得分:1)
您可以在一次查询中使用insert ... on duplicate key update。
有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html。
假设item_id是一个键,你可以
INSERT INTO t1
(group_id, item_id, project_id, user_id)
VALUES
($groupID, $itemID, $projectID, $userID)
ON DUPLICATE KEY UPDATE group_id = $groupID
答案 2 :(得分:0)
我建议您添加代理主键,以便您可以唯一地识别每一行。然后你可以进行这样的更新:
UPDATE t1 SET group_id = $newgroupid WHERE id = $objectid;