定义并使用sequence、trigger后,当使用insert into 语句插入一个值时,程序就报错,不能插入。为什么?
当定义了sequence、trigger后,在表中插入数据时,发现id值 并不是按每次均增加1,而是有时增加3,有时增加5,甚至有时增加了10,这又是为什么,怎么解决,有没有一段完整的代码,请大家帮忙看看。谢谢DROP TABLE IF EXISTS plan_rzfx;
CREATE TABLE plan_rzfx(
id number PRIMARY KEY,
projectID varchar2(36)
);comment on column plan_rzfx.ID is '唯一顺序号';
comment on column plan_rzfx.projectID is '项目的UUID号';CREATE SEQUENCE seqID_rzfx
START WITH 1
INCREMENT BY 1;CREATE OR REPLACE TRIGGER triID_plan_rzfx
BEFORE INSERT ON plan_rzfx FOR EACH ROW
BEGIN
SELECT seqID_seqID_rzfx.nextval INTO :NEW.ID FROM dual;
END;
/定义的insert如下:
create or replace function plan_rzfx_insert(projectid varchar2)return integer
/* *******************************************************************************************
--功 能:向表中插入一条数据
--输入参数:
projectID:项目的唯一UUID
--输出参数: 上传文件是否成功。成功 1,失败为 0
--********************************************************************************************/
AS
begin
insert into plan_rzfx_project(projectid) values(projectid);
commit;
return 1;
exception /*如果发生异常*/
WHEN OTHERS THEN
ROLLBACK;
return 0;/*失败*/
end plan_rzfx_insert;
/
解决方案 »
- 求一个复杂的sql语句,要求见内
- 求老鸟解答
- 请教一下orcale、mysql的多线程编程锁问题
- 序列中的 catch 问题!
- ORA-12154: TNS:could not resolve service name
- 由于系统错误 5 (Oracle in OraHome92),指定驱动程序无法加载
- 再问一个关于select中dual的问题,请各位指导。
- to_date函数的问题,急!!!
- 请问存储过程编写中这个错误提示是什么意思?
- 数据库死锁
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 一个比较有意思的难题?关于多条件查询![
- oracle根据用户备份的命令是什么呢 多用户的
START WITH 1
INCREMENT BY 1
NOCACHE;
CREATE SEQUENCE seqID_rzfx
START WITH 1
INCREMENT BY 1
NOCACHE;
如果当plan_rzfx_insert函数中的插入操作失败,
exception块中事务rollback了,但序列值是不会回退的。
insert into plan_rzfx_project(projectid) values(projectid);
WHEN OTHERS THEN
ROLLBACK;
return 0;/*失败*/
改成
WHEN OTHERS THEN
RAISE;还有单独测试下insert语句,不使用函数,看是否可以插入