如何产生一个序号
我想在informix 中产生一个序号,类似于oracle的sequence。办法是用一个存储过程处理一个特定表中的特定字段,取出该字段的值后让其自加。现在的问题是:我在外面有事务,外面的事务回滚后,该字段的值也回滚,所以不起作用。有没有什么办法让存储过程中的事务不回滚?
或者有没有什么其他办法产生一个序号,基于数据库。 高版本有 sequence.
低版本可以用serial 来实现的。我试了下 那怕 rollback work了 ,serial 也会增加的。 serial可以不用插入表就取出来吗? 我上午也试了一下,但要删除纪录,插入纪录,查询结果3条语句,效率太低,有没有什么办法提高一下效率. 一个 insert
一个 select dbinfo( 'sqlca.sqlerrd1' ) from systables where tabid =1 ;
delete 不必每次做,可以定时做。
效率最高的应该是用c 的信号量实现互斥, 共享内存放个整形变量自增。 共享内存有其他的问题,具体来说就是掉了就找不回来,所以不想用。我先试试.谢谢 informix的高版本里面也有sequence,不知道你的是哪个版本! 加事物可以么?
在并发的情况,能保证不让其他用户更新该字段么?
我的怎么似乎不行啊,我的是ids9.4 定义一个serial类型的字段 原帖由 wenlq 于 2007-7-11 12:10 发表 http://bbs.chinaunix.net/images/common/back.gif
高版本有 sequence.
低版本可以用serial 来实现的。我试了下 那怕 rollback work了 ,serial 也会增加的。
同意,赫赫
页:
[1]