我有一个上传脚本,其中包含链接到用户的虚拟文件夹结构(因此没有实际结构)。所以我可以为每个用户制作不同的结构。
此结构(仅)保存在数据库中。文件在数据库中链接,但都保存在一个文件夹中。但现在我想将一个完整的结构复制到另一个用户。该结构可以具有无限子文件夹。
数据库看起来像:
id | user | parent | name
1 | 6 | 0 | Folder 1
2 | 6 | 0 | Folder 2
3 | 6 | 1 | Sub of Folder 1
4 | 6 | 1 | 2nd Sub of Folder 1
5 | 6 | 2 | Sub of Folder 2
6 | 6 | 3 | Sub of Sub of Folder 1
7 | 6 | 6 | Sub of Sub of Sub of Folder 1
将此内容复制到其他用户的最佳方法是什么? 只用mysql可以吗?
(请记住,id是自动增量索引,父亲是指id) 希望有人可以提供帮助。
答案 0 :(得分:1)
@ Maximus2012正在做点什么。
INSERT INTO table (
user,
parent,
name
)
SELECT (
7 as user,
parent,
name
)
FROM table
WHERE user = 6;
这样做是从表中选择给定的列并使用结果将值插入表中。请记住,您必须在INSERT
查询中指定列,然后以SELECT
子查询的相同顺序指定列。作为用户的7
显然应该是新用户的适当ID。但是,这演示了如何在子查询中包含具体值。
答案 1 :(得分:0)
请参阅此SQL Fiddle。
有一点需要注意,如果在查询期间修改了表格,您可能会遇到竞争条件。我遗憾地对MySQL不熟悉,以确保不会发生这种情况。查看是否在复制时锁定表以进行写入(无论如何,此可能在写入时发生)或确定事务是否会使其安全。
此处描述的架构和INSERT ... SELECT
状态确实按要求执行,并将导致最适合您的完整用例的方法。