【发布时间】:2008-12-01 23:10:32
【问题描述】:
我有一个存储对象的数据库。我有以下(简化的)架构
CREATE TABLE MyObjects
(
UniqueIdentifier Id;
BigInt GenerationId;
BigInt Value;
Bit DeleteAction;
)
每个对象都有一个唯一标识符(“Id”)和一个(一组)属性(“Value”)。每次更改对象的属性值时,我都会在该表中输入一个新行,并使用新的世代 id(“GenerationId”,单调递增)。如果删除了一个对象,那么我通过将“DeleteAction”位设置为 true 来记录这一事实。
在任何时间点(生成),我都想检索所有活动对象的状态!
这是一个例子:
Id GenerationId Value DeleteAction
1 1 99 false
2 1 88 false
1 2 77 false
2 3 88 true
世代中的对象是:
1: 1 {99}, 2 {88}
2: 1 {77}, 2 {88}
3: 1 {77}
关键是:如何找出每个唯一对象的行,该对象的世代 ID 最接近(但不超过)给定世代 ID?然后我可以执行一个过滤后步骤来删除 DeleteAction 字段为 true 的所有行。
【问题讨论】:
-
我没有关注您的世代对象示例。你能澄清一下吗?
-
例子中有错别字,好像是generationID 1用了两次。
-
不,关键是要表明对象 1 和 2 都添加在同一代 1 中。源代码管理的一个示例是在变更集中添加 2 个文件,其中代是变更集编号.