opcenter camstar ID生成规则
1.找到对应的CDO 16进制
select * from CDODEFINITION where cdoname ='Employee'
![](https://img2023.cnblogs.com/blog/834674/202212/834674-20221214195717146-121263285.png)
id前6位 位16进制的CDO type ID,不够6位字符串的前面补0
![](https://img2023.cnblogs.com/blog/834674/202212/834674-20221214195802331-5263487.png)
Employee 000474
2.找到CDO 下一个ID的值
select * from InstanceIDCount where CDODEFID=1140 对应的cdodefid
ClientInstanceID 为CDO 用过的最大的ID (16进制)
272d 10029
转换为10进制加上递增数量1,再转换为16进制的16位字符串保存
272e 10030
3.找到 DBIdentifier
select * from DBIdentifier
如果有数据则获取 dbidentifie r的值 ,没有则为0
![](https://img2023.cnblogs.com/blog/834674/202212/834674-20221214195907526-963526020.png)
8000000000 549755813888
新的ID的值=cdodefid(16转10)+1+ dbidentifier (16转10),再转换为10位的16进制
10030+549755813888=549755823918 转换为16进制 800000272E
16进制的CDOID+新的ID的值
0004e2800000272e
系统每次都会一次性拿25个ID缓存,所以InstanceIDCount表的值每次都会递增25,系统用完ID后再更新,如果server重启 缓存失效,系统会从最新的数据上递增,第一次从第二个ID开始