触发器建立的有问题
create or replace trigger tri_log
before insert on  borrowlog 
for each row
begin
select TraceNo_Seq.nextval into :new.TraceNo from dual;
end;

解决方案 »

  1.   

    不好意思,写错了
    create or replace trigger tri_log
    before insert on  borrowlog 
    for each row
    begin
    select tri_log.nextval into :new.id from dual;
    end;
      

  2.   

    谢谢。我修改了一下,你看看这样对不对?
    create  sequence   seq_account increment   by   1 start   with  1  nomaxvalue   nocycle;create or replace trigger tri_account before insert
    on account 
    for each row
    begin 
    select   seq_account.nextval   into :new.account_id  from   dual;
    end tri_account;其他的内容不变,但是我运行以后发现,还是老样子。是什么原因呢?
    这里我不知道 from   dual 是什么意思?一定是这个参数吗?
    谢谢。
      

  3.   

    另外我按照楼上的,将
    begin 
    select   seq_account.nextval   into :new.account_id  from   dual;
    end tri_account;修改为
    begin 
    select   tri_account.nextval   into :new.account_id  from   dual;
    end tri_account;
    也不行啊
      

  4.   

    drop table borrowlog cascade constraints;
    create table borrowlog
    (
      log_id number(16,0),
      account_id number(16,0),
      book_id number(16,0),
      borrow_date date,
      deadline date,
      return_date date,
      times number(2,0),
      constraint pk_borrowlog primary key(log_id));create   sequence   seq_log increment   by   1 start   with   1 nomaxvalue   nocycle;create trigger tri_log before insert
    on borrowlog for each row
    declare 
    id number(16);
    begin 
    select seq_log.nextval into id from dual;
    new.log_id := id;
    end;
    /
    insert ...
    此外你的insert语句有问题,数据与字段的类型不一致。
      

  5.   

    测试通过的脚本如下:drop table borrowlog cascade constraints;
    create table borrowlog
    (
      log_id number(16,0),
      account_id number(16,0),
      book_id number(16,0),
      borrow_date date,
      deadline date,
      return_date date,
      times number(2,0),
      constraint pk_borrowlog primary key(log_id));
      
    drop sequence seq_log;
    create   sequence   seq_log increment   by   1 start   with   1 nomaxvalue   nocycle;create or replace trigger seq_log
    before insert on  borrowlog 
    for each row
    begin
    select seq_log.nextval into :new.log_id from dual;
    end seq_log;
    /insert into borrowlog(account_id,book_id,borrow_date,deadline,return_date,times)
    values ('006','009',to_date('2008-12-18','yyyy-mm-dd'),to_date('2008-12-18','yyyy-mm-dd'),to_date('2008-12-19','yyyy-mm-dd'),10);
    commit;