复制数据库字段

时间:2013-08-20 17:06:07

标签: mysql sql

我正在使用MySQL。我有3个字段的表:id,price,count。我需要编写小型计费系统,我遇到了一些问题。示例:

  1. 用户需要新电脑。用户将价格和计数写入DB(例如999,1)。
  2. 管理员可以确认此价格或进行修改。如果管理员确认此价格和计数我需要保存用户价格和计数和管理员。我是否需要创建重复字段(例如confirmed_price,confirmed_count),如果管理员更改了此价格,我需要创建changed_price和changed_count字段。在这个变体表中将有许多0值,任何人都可以推荐我另一种解决这个问题的方法

2 个答案:

答案 0 :(得分:0)

一种方法可能是,只需创建一个额外的列STATUS。

一旦用户输入,它可以是1状态(意味着刚输入) 批准 - 2 改变了 - 3

虽然1和2可以在同一行,但更改的可以是单独的行,而检索您可以检索具有max(status)的记录,这样您每个项目只能获得一条记录,即使它们可能有多个ID在数据库中。

同样的状态逻辑可以用于其他方式来实现同样的目的。

答案 1 :(得分:0)

最简单的方法可能是添加一个额外的列,但这取决于您的情况。

如果您不需要存储原始价格/数量,那么添加一个列很容易,并且可以这样工作:

|   ID   |   Price   |   Num   |   Verified   |
+--------+-----------+---------+--------------+
|   1    |    110    |    1    |       1      |
|   2    |    999    |    2    |       0      |

验证时,您可以UPDATE该行,在保存时将Verified更改为1.然后,任何列Verified = 0的内容都需要进行审核并验证Verified = 1

所以,说ID 2应该有3的Num。你可以使用Admin编辑:

UPDATE myTable SET Num=3 WHERE ID=2

然后当他们点击“保存”

UPDATE myTable SET Verified=1 WHERE ID=2

您也可以同时执行这两项操作

UPDATE myTable SET Num=3, Verified=1 WHERE ID=2

如果要保存旧值,可以轻松创建包含时间戳的存档表。然后在运行更新之前将值插入到该表中。

注意: Count是一个错误的列名,因为它是SQL中的关键字