将虚拟文件夹结构复制到另一个用户

时间:2015-03-31 21:26:20

标签: php mysql database

我有一个上传脚本,其中包含链接到用户的虚拟文件夹结构(因此没有实际结构)。所以我可以为每个用户制作不同的结构。

此结构(仅)保存在数据库中。文件在数据库中链接,但都保存在一个文件夹中。但现在我想将一个完整的结构复制到另一个用户。该结构可以具有无限子文件夹。

数据库看起来像:

 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) 希望有人可以提供帮助。

2 个答案:

答案 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状态确实按要求执行,并将导致最适合您的完整用例的方法。