将Identity列生成器转换为hilo:应该将“next_hi”初始化为什么?

时间:2012-09-13 11:45:11

标签: nhibernate data-conversion hilo

我正在将使用Identity生成器的类转换为使用hilo的类。我也使用一个表,每个实体有不同的行:

EntityId (table)
 - EntityName
 - NextHigh

旧表:

Patients (table)
 - Id (identity)

新表:

PatientRecord (table)
 - Id 

为了保持数据完整性,我只使用现有的Patients.Id作为新的PatientRecord.Id:

insert into PatientRecord (Id) 
select Id from Patients

并创建一个EntityId条目:

insert into EntityId values ('PatientRecord', ??)

其中??是下一个hi值。我应该在这里使用什么价值?默认情况下,初始化列将是1.我只是使用它,还是应该使用select MAX(Id) from PatientRecord之类的东西?

1 个答案:

答案 0 :(得分:1)

next_hi类似于用于生成身份(id)的乘法的会话密钥,因此您可以插入任何您想要的内容,例如1或2或10,每个用户递增next_hi,并使用它生成所有身份,直到最大值值然后再通过递增请求另一个next_hi ...使用此策略,所有身份都是唯一的......并且它们可以在本地生成

Is there a practical way of migrating from identity columns to hilo keys?

http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html