|
|
|
|
EOSUniqueTable中如何区分不同表的相同主键名 发布时间:2007-06-19 10:06:59 作者:cservice 出处: 语言:中文 阅读次数:1038次 |
| 【适用范围】
EOS5.x
【问题描述和定位】
EOSUniqueTable中定义了通过BL_getPrimaryKey获得的主键初始化值,如果不同表的主键名都是一样的话,EOSUniqueTable中怎么区分是哪个表的主键呢?
【解决方案和步骤】
方案一:在EOS5.1.2及后续版本,如果多个表中主键相同的话,可以这样做:先在EOSUniqueTable表中配置几条数据,取不同的name,然后,在调用BL_gerPrimaryKey的时候用两个参数,(请见Studio联机帮助BL_gerPrimaryKey示例2:获取唯一序号作为客户表的主键)
示例2:获取唯一序号作为客户表的主键。
|
ID
|
输入输出
|
节点类型
|
节点路径
|
描述
|
|
1
|
输入/输出
|
EOS Field
|
CUST/CUSTID
|
存放结果
|
|
2
|
输入/输出
|
Constant
|
customerID
|
主键对应的序列号名称
|
注意:此时CUSTID节点的值是根据系统表EOSUniqueTable中name为customerID的序列号获取的。
方案二:EOS主键获得的方式实际上是根据一个名称来获得的,通过 com.primeton.tp.core.api.Unique.nextLong(sequence名) 可以获得。BL_getPrimaryKey调用时候是根据字段的名称获得的,因此如果不同表的相同主键名字段就会通过同一个sequence名获得,不过,不同不会发生主键冲突的问题。
如果你想要分开,可以写一个自己的getPrimaryKey的bl方法,然后调用上面eos提供的api去获取,你可以把表名和字段名拼在一起做为sequence名
【备注】
|
|
| 声明:本栏目转载文字、造型、样式、图形及程序如有来自网络,版权归原作者或首发媒体所有,欢迎任何个人访问或者转载,若有作者及出处有误,请来信说明,我们将及时更正。 |
|