c# – 版本控制算法
发布时间:2020-12-16 01:29:19 所属栏目:百科 来源:网络整理
导读:我有一个存储对象的数据库.我有以下(简化)架构 CREATE TABLE MyObjects( UniqueIdentifier Id; BigInt GenerationId; BigInt Value; Bit DeleteAction;) 每个对象都有一个唯一标识符(“Id”)和一个(一组)属性(“Value”).每次更改对象的属性值时,我都会在此
我有一个存储对象的数据库.我有以下(简化)架构
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的所有行. 解决方法
这适用于MS SQL
SELECT id,value FROM Myobjects INNER JOIN ( SELECT id,max(GenerationID) as LastGen FROM MyObjects WHERE GenerationID <= @Wantedgeneration Group by ID) On GenerationID = LastGen WHERE DelectedAction = false (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |