各位,我想实现主键自动增长,可是下面这个报错    “触发器无效且未通过重新确认 ”以下是我的代码CREATE TABLE SysMenu (PK integer  primary key, sysMenuNo VARCHAR ( 60 ) NOT NULL, sysMenuName VARCHAR ( 60 ) NULL,
linkAddress VARCHAR ( 255 ) NULL, sequence INT NULL, islink VARCHAR ( 1 ) NULL,
re VARCHAR ( 255 ) NULL, aa varchar2(150),bb varchar2(150),cc varchar2(150),dd varchar2(150),ee varchar2(150),
ff varchar2(150),gg varchar2(150),hh varchar2(150),ii varchar2(150),jj varchar2(150),kk varchar2(150),
ll varchar2(150),mm varchar2(150),nn varchar2(150));
drop trigger tigger_SysMenu;-- 建立序列:create sequence Sequence_t_qmjb_oliveright                     
minvalue 1               
maxvalue 999999999999999999999999999  
start with 1 
increment by 1
cache 20; --建立触发器
create trigger "trigger_t_qmjb_oliveright" before
insert on SysMenu for each row when(new.PK is null)
begin
 select Sequence_t_qmjb_oliveright.nextval into:new.PK from dual;
 end;
 
谢谢各位了!!

解决方案 »

  1.   

    在建自治事务:--所以改一下触发器create trigger "trigger_t_qmjb_oliveright" 
    before 
    insert on SysMenu 
    for each row 
    declare 
       pragma autonomous_transaction;

    when(new.PK is null) 
    begin 
    select Sequence_t_qmjb_oliveright.nextval into:new.PK from dual; 
    end; 
      

  2.   

    主键不能为空所以insert的时候报错要么去掉主键。或者改用insert into ... values(Sequence_t_qmjb_oliveright.nextval, ..... )