mysql - 临时表和主表 - mysql

标签 mysql

我有一个场景,我需要将数据临时插入表中,稍后在批准或确认后,将其永久化。数据将由用户插入,并且需要 super 用户批准或拒绝。

我现在想到的是有两个不同但相同的表(临时表和主表),用户将数据插入到临时表中。 super 用户确认后,数据将移至主表。但问题是,当数据库包含大量表时,这个过程就会变得更加复杂。

编辑:这意味着CREATE EDIT & DELETE命令。

有没有更简单或更好的方法来做到这一点?

请提出建议。

最佳答案

使用版本表(与评论相关):

这里的想法是有一个版本表;当您的用户更改一条信息时,新版本将与相关 ID 一起存储在此表中。

然后您需要做的就是加入 PersonID 并选择最新接受的版本。

这意味着用户可以根据需要进行任意数量的更新,但在 super 用户接受它们之前它们不会显示,这也意味着数据永远不会被破坏(存储在版本表中)并且他们不需要实现回滚,因为它已经存在!

查看:http://sqlfiddle.com/#!3/cc77f/4

人员表:

ID | Age Etc... (Info That Doesn't Change)
-----------------------
1  | 12
2  | 16
3  | 11 

人物版本表:

VersionID | PersonID | Name  | Approved
-----------------------
1         | 1        | Stevz | FALSE
2         | 1        | Steve | TRUE
3         | 2        | James | TRUE
4         | 3        | Jghn  | FALSE
5         | 3        | John  | TRUE

示例表 SQL

CREATE TABLE People 
    (
     id int identity primary key, 
     age int
    );

CREATE TABLE PeopleVersion 
    (
     versionId int identity primary key, 
     peopleId int, 
     name varchar(30),
     approved varchar(30) 
    );

示例查询

SELECT * FROM People p
INNER JOIN PeopleVersion v ON p.id = v.peopleID 
WHERE v.approved = 'TRUE' 
ORDER BY versionId DESC 

进一步的见解:

您甚至可以拥有三种“已批准”状态; null 表示尚未有管理员选择,TRUE 表示已接受,FALSE 表示已拒绝

您可以向用户显示 nulltrue 中的最新版本,向管理员显示所有这三个版本,并仅向网站的其他用户显示 版本正确


旧评论

您可以在表中添加一个名为“approved”的字段,然后隐藏任何内容,而不将“approval”标志设置为“TRUE”吗?

它可以默认为FALSE,并且只有 super 用户才能看到该标志设置为FALSE的项目

例如

Name  | Age | Approved
-----------------------
Steve | 12  | FALSE
James | 16  | TRUE
John  | 11  | FALSE

用户只会看到 James,但 super 用户会看到列出的所有三个


使用临时表和主表是解决此问题的另一种方式,尽管随着一切变得更大,这可能会导致问题

关于mysql - 临时表和主表 - mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298309/

相关文章:

php - PHP 中的远程 MySQL 连接

php - 使用 PDO 但仍然可以 SQL 注入(inject)

MySQL 查询或存储过程递归调用自身并返回所选父节点的所有节点

javascript - 何时使用 node-mysql 关闭 MySQL 连接?

mysql - 使用 phpMyAdmin 导出数据库时出现 SQL 语法错误

MySQL更新语句存储排名位置

php - 如何在 3 个不同的表中使用 while 循环来回显数据库的特定列

mysql - SQL表逻辑,哪种方式是正确的

php - 插入为每个值创建新行

php - 将 SQL 数据放入 HTML 表中。表格标题重复