2

举个例子,我们有一个名为 student 的表(sID 是主键,isValid=1 表示该行有效,0 暂时无效)

sId    sName   gpa   isValid 
1      Tom      3.0    1
2      Hanks    3.5    1  

现在让我们假设我已经更新了 Tom 的值。但我仍然想保存以前的值。

sId    sName   gpa   isValid 
1      Tom      3.0    0
2      Hanks    3.5    1 
1      Tom      3.6    1

现在汤姆斯值发生了变化。坚果他以前的价值观并没有永久删除。

我该如何实现这是有插件或什么的?问题是主键不止一次出现。

4

2 回答 2

1

您需要更改数据库设计。

保留在表中以及将成为父表的sId,sName任何其他字段(如果需要) 。student创建另一个表student_academic,例如sId作为学生表的外键以及gpa, isvalid字段。

对于每个学生值的更改,插入新的事务条目。这也可以确保数据库Normalization 并满足您的需求。

于 2012-04-12T06:32:27.860 回答
0

我觉得这里不需要任何插件,我会做这样的事情:

  1. 使您的 SID 自动递增
  2. 对于每个插入,获取最后一个版本 (sId - 1) 并将其标记为 isValid = 0

我假设你正在使用 jdbc

于 2012-04-12T06:18:49.707 回答