使用存储过程向数据库的一张表中插入记录,
表名:t_ps_backorderentry。其中有一列:
列名:fseq integer
fseq是一个自动增长的字段。创建一个sequence,起始值1,最大值1000.
每次进入存储过程时,删除该sequence,重新建立。
问题出现:多用操作时,因为sequence是全局的,所有session用的是同一个东西。有可能其他用户正在使用,然后sequence被删除,然后盗用 nextval时就出错。查网上资料这东西又不能加锁。各位有没有有遇到这种情况,或者有其他解决思路。多谢
表名:t_ps_backorderentry。其中有一列:
列名:fseq integer
fseq是一个自动增长的字段。创建一个sequence,起始值1,最大值1000.
每次进入存储过程时,删除该sequence,重新建立。
问题出现:多用操作时,因为sequence是全局的,所有session用的是同一个东西。有可能其他用户正在使用,然后sequence被删除,然后盗用 nextval时就出错。查网上资料这东西又不能加锁。各位有没有有遇到这种情况,或者有其他解决思路。多谢
解决方案 »
- 求助,奇怪的ORA-1555错误:
- 我在导入oracle数据库出现如下错误,请问什么原因@@
- 请教一函数写法
- orcl中 如何将varchar类型的字段值转换为date类型?!在线等,急!!!!!!!!!!!!!!!
- oracle 用toad时,按 execute as script 时,在执行结果的output里,怎样可支持汉字? (用的toad 8.6),请帮忙?
- oracle9的建数据库,建表,修改等的问题
- 请教:为什么我安装oracle9i服务器后没有监听服务
- Oracle是如何使用和管理裸设备的?
- 遭遇sql
- ORACLE变量定义问题
- 如何将表横向扩展?
- oracle条件部分用字段的部分内容进行比较问题!
===========================================
为什么这样做?
declare
n number(10);
tsql varchar2(100);
begin
select my_seg.nextval into n from dual;//my_seg為序列名
n:=-(n-1);
tsql:='alter sequence my_seg increment by'|| n;
execute immediate tsql;
select my_seg.nextval into n from dual;
tsql:='alter sequence my_seg increment by 1';
execute immediate tsql;
end;
/ 这是我看到的一段代码,你可以看看