create table orderItem
(
bookid number not null,
orderid number , 
bookname varchar(30),
bookprice number,
qty number
)create sequence s_orderid //序列
start with 1
increment by 1
nomaxvalue
nocycle
cache 30; create or replace trigger users_sysrole_id//触发器
before insert on orderitem
for each row
declare 
next_no number;
begin
select s_orderid.nextval into :next_no from dual;
:new.id :=next_no;
end;
/

解决方案 »

  1.   

    create or replace trigger users_sysrole_id//触发器
    before insert on orderitem
    for each row
    declare 
    next_no number;
    begin
    select s_orderid.nextval into next_no from dual;--不要:
    :new.id :=next_no;
    end;
      

  2.   

    实测建表和序列(你的代码未做任何改动)create table orderItem
    (
    bookid number not null,
    orderid number ,  
    bookname varchar(30),
    bookprice number,
    qty number
    );create sequence s_orderid
    start with 1
    increment by 1
    nomaxvalue
    nocycle
    cache 30; 
    触发器,里面问题较多,请参考下面通过编译的代码:CREATE OR REPLACE TRIGGER users_sysrole_id
    BEFORE INSERT ON orderitem
    FOR EACH ROW
    DECLARE
        next_no NUMBER;
    BEGIN
        SELECT s_orderid.nextval INTO next_no FROM dual;
        :new.bookid :=next_no;
    END;