oracle 问题 二

来源:互联网 发布:新手做淘宝客操作流程 编辑:程序博客网 时间:2024/06/05 19:48

在java 拼接 oracle的自动增长出触发器的时候报错 




create or replace trigger tri_U_001_HBJ
  before insert on U_001.H_BJ   --表名
  for each row
declare
  nextid number;
begin
  IF :new.ID IS NULL or :new.ID=0 THEN --ID是列名
    select UserFen_id.nextval --UserFen_id是序列
    into nextid
    from sys.dual;
    :new.ID:=nextid;
  end if;
end tri_U_001_HBJ;



insert into U_001.H_BJ(id)values
(UserFen_id.nextval)  ;

create sequence UserFen_id minvalue 1 maxvalue 99999999 start with 1  increment by 1  cache 20 




执行时出错,猜测原因:执行的时候将上述语句翻译成了带参数的查询,如果把创建触发器语句中的:new,:old等关键字去掉则执行成功


解决方法 去除 new old 前面的 '  :  '