各位,关于序列值的问题??? 是不是在别的地方执行过select sq_name.nextval from dual?使用触发器也可以解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 alter sequence seq_name increment by 1;select seq_name.nextval from dual; 序列每调用一次nextval 的值,自动加一,不管是得到的值是否生效。如果将最大值保存在一个地方或在库中搜索最大值,则可能会造成重复(多用户操作的情况)。用触发器是一个好办法,但同样不能保证肯定的连续和不重复,因为触发器的数据的提交是随用户的提交而提交的。如果你一定要保存成连续的数值,除非你取消ROLLBACK的操作,而且每次操作都必须成功。另外可以在保证只有一个人操作的情况下,用保存最大值的方法实现。我想问问贴主: 为什么一定要连续的值呢,有意义吗? 另外,即便生成了连续的序号,你就不做删除操作吗?只要已删除,不就又不连续了。 不是我打击你,说实话,保证序号不重,很容易实现,但要保证一定连续,而且不重,就很难了。如果在多用户操作的模式下,好象根本就不能实现,除非取消ROLLBACK操作功能。 不需要要采用序列呀 SELECT MAX(列名)+1 INTO :aa from table; 这样就可以得到连续的序号了 CREATE SEQUENCE GHNO INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 CYCLE NOCACHE NOORDER; 注意设置nocache.若多处地方调用,那有可能不连续,或者有删除记录也会造成。为什么要考虑连续问题,只是系统需要就不必考虑. 如果采用MAX的话,可以在取得最大值后,立即COMMIT,就可最大化避免多用户重复的问题,但愿你的用户不会超过50个。我和楼上的态度一样,为什么一定要连续啊,流水号的主要目的是不重复,其它的都不重要。尤其当流水号还要参与更新删除操作的时候。不要舍本求末,还是以实现主要目的为主,不要考虑的太花哨了 就是我们单位哪些不懂的人硬要我做的,唉,不懂的指挥懂的,谢谢多位关心。我会设NOCHCHE的谢谢。 一条sql的问题 求大神帮忙看看SQL语句错在哪里 用存储过程编程遇到的小问题 Oracle 身份自助服务 如何存储既包含文字又包含图片的文件内容? 我好菜 大家用oracle做web数据库 都用接口什么访问数据 请问哪有Oracle 8i For NT DownLoad?(DB),高分酬谢,谢谢 Oracle中的分页语句怎么写? 关于数据库触发事件的问题 请教各位一个关于date的问题?谢谢 关于SQL写法
select seq_name.nextval from dual;
如果将最大值保存在一个地方或在库中搜索最大值,则可能会造成重复(多用户操作的情况)。
用触发器是一个好办法,但同样不能保证肯定的连续和不重复,因为触发器的数据的提交是随用户的提交而提交的。
如果你一定要保存成连续的数值,除非你取消ROLLBACK的操作,而且每次操作都必须成功。
另外可以在保证只有一个人操作的情况下,用保存最大值的方法实现。我想问问贴主:
为什么一定要连续的值呢,有意义吗? 另外,即便生成了连续的序号,你就不做删除操作吗?只要已删除,不就又不连续了。 不是我打击你,说实话,保证序号不重,很容易实现,但要保证一定连续,而且不重,就很难了。如果在多用户操作的模式下,好象根本就不能实现,除非取消ROLLBACK操作功能。
SELECT MAX(列名)+1 INTO :aa from table;
这样就可以得到连续的序号了
MAXVALUE 1.0E28 MINVALUE 1 CYCLE
NOCACHE NOORDER;
注意设置nocache.
若多处地方调用,那有可能不连续,或者有删除记录也会造成。
为什么要考虑连续问题,只是系统需要就不必考虑.