删除用户在演示站点中添加的数据的最佳做法?

时间:2011-10-04 11:38:44

标签: php postgresql

这是我第一次需要制作演示站点(这是使用PostgresSql在PHP中完成的一些示例数据)。目前我们允许用户登录并执行网站上提供的操作。我想要什么要做的是,一旦用户完成操作,我需要删除用户创建的数据。

但问题是如果用户在演示域中创建的数据库中插入数据,那么如果我删除域数据,可能会有另一个用户在另一个会话中插入或删除数据。所以我不想显示其他用户操作(如插入,删除)给别人。它不会发生冲突。我怎么能这样做。

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。

  1. 使用SESSION。不知道这是否可行,但是如果你可以简单地将所有数据放入SESSION中的模拟对象中,你就可以了。
  2. 这实际上可能是1b。你可以使用cookies与SESSION做同样的事情,但它确实更令人讨厌。
  3. 生成模拟表 - 每次新用户登录时,为该用户创建一系列唯一表,前缀为该用户的UID。是的,它确实创建了模式蠕变,但它也意味着您可以轻松地查看可以回收的空间。
  4. 在数据库中以某种方式“标记”数据。这可能意味着您在一些用户数据的前面添加了一些额外的数据,这些数据在数据库中将其标记为临时数据。但问题是,您的SERIAL列无法正确重置,因为您的序列将在删除数据后保留在当前位置。

答案 1 :(得分:2)

为每个演示用户创建一个新数据库。使用来自“主”数据库的示例数据填充每个新数据库,该数据库永远不会被尝试演示的人更改。然后,当用户完成演示时,删除整个数据库。

您可以对此进行优化,以便您只需为每个用户创建一些临时表,这实际上取决于用户在使用演示时究竟修改了哪些数据。