*****棘手!!!!,在三层结构中插入记录如何自动生成主键的问题,挑战各位

ncw 2003-01-06 04:52:34
在三层中,怎么生成一个唯一主键(不是用户输入)用AutoInc行不行,如何处理并发问题,更进一步如何假如是主从表,在客户端没有应用更新之前并且主表的主键还未生成,从表如何关联主表,
...全文
17 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaga_ghost 2003-01-10
上面的一个老兄告诉你了,为什么不用触发器呢?
回复
ihihonline 2003-01-10
这样吧,再应用程序服务器里写;肯定没有错;但是这个过程如:Insert/Append要再应用程序服务器里写,客户端只负责传递参数;Data就可以了
回复
ihihonline 2003-01-10
问题是你的主关键字有什么用处?有什么规律?以后还用得上她么?做什么用?这些清楚了之后你就可以作了;如果主关键字有用的话,就需要根据返回信息再次核对,如果没有用的话 hps9743003(笨笨) 说得可以考虑,但是xiaoyan21(明月心) 的方法还是不太好,就应为试多层的;
回复
EastenChild 2003-01-09
1.生成GUID值:CreateGuid,具体用法看帮助
2.在子表的OnNewRecord中把它赋给主键
回复
xiaoyan21 2003-01-09
我觉得我那种方法是较有效的,也简单.

有简单的方法为什么不用呢?

当然具体的情况有所不同.

回复
xxsun 2003-01-07
添加触发器,在insert时出发
回复
star_of_light 2003-01-07
让数据库自动生成。
回复
zhxfzhxf1 2003-01-07
gz
回复
skypeople 2003-01-07
太笨了的方法吧,试试在APPLYUPDATE时将保存主表的SQL的传到中介层在BEFOREUPDATE中执行后取回主建再保存细表
回复
xiaoyan21 2003-01-07
不过,我已经有方法解决了.

你新建一个表吧,这个表可以只有一个字段,这个字段用来存放主表的记录数.

比如:

新建表:die_tab
字段1:ID(自动生成)
字段2:RecordCount(用来存放记录数)

所以,你的主键可以自动生成为RecordCount的值+1.

这里要注意几点:
当你读取RecordCount的值的时候就必须将字段更改为RecordCount+1;
你不能直接读取主表的RecordCount属性的值,因为你是分布式结构,要考虑
多用户情况.



回复
xiaoyan21 2003-01-07
随闷啊.....我也有这种问题...

回复
xiaoyan21 2003-01-07
随闷啊.....我也有这种问题...

回复
TOMWLD 2003-01-06
AutoInc能不用尽量不用吧
回复
hps9743003 2003-01-06
关于唯一的主键
有的数据库支持自动生成唯一标识符
比如ACCESS
如果是在程序里生成的话如果用AUTOINC那么数据量有限
可以调用API里的一个函数生成唯一的标识符
(如:{098f2470-bae0-11cd-b579-08002b30bfeb})
以其做字段
回复
ytwxw 2003-01-06
只能从数据库里取啦
楼主
然后给从表了
怎么取?
自己想办法啊,并发问题也要自己控制啊

回复
eastliangliang 2003-01-06
建库的时候没设置吗?
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1565

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告