1、建用户数据表
建立表test,data_id为主键2、创建自动增长序列
create sequence test_seq minvalue 1 maxvalue 9999999999
increment by 1
start with 1; /*步长为1*/3、创建触发器
create trigger test_trigger
befor insert on test
for each row;
declare new.data_id number;
begin 
select test_deq.nextval into new.data_id from dual;
end test_trigger;
在SQL中到最后一步end test_trigger;的时候始终退不出去是什么原因
界面是这个样子的
SQL>create trigger test_trigger
    2 befor insert on test
    3 for each row;
    4 declare new.data_id number;
    5 begin 
    6 select test_deq.nextval into new.data_id from dual;
    7 end test_trigger;
    8
    9
    10
到底是哪错了?
    

解决方案 »

  1.   

    错误多处,改成如下:
    CREATE OR REPLACE TRIGGER TEST_TRIGGER
      BEFORE INSERT ON TEST
      FOR EACH ROW
    BEGIN
      SELECT TEST_SEQ.NEXTVAL INTO :NEW.DATA_ID FROM DUAL;
    END TEST_TRIGGER;
    /
      

  2.   

    那个declare不用么?
    书上介绍触发器的章节很少,不是很详细
      

  3.   

     
    for each row; 
    后面不用分号 
    end test_trigger; 
    后面加/执行以下
      

  4.   


    create sequence test_seq minvalue 1 maxvalue 9999999999 
    increment by 1 
    start with 1;create trigger test_trigger 
    before insert on test 
    for each row; 
    begin 
    select test_deq.nextval into test.id from dual;--比如说你的test表有个id字段,设置他自动增长 
    end test_trigger; 
      

  5.   

    老大你错别字太多了见下面
    SQL> create or replace trigger test_trigger
      2  before insert on test
      3  for each row
      4  begin
      5  select test_seq.nextval into :new.data_id from dual;
      6  end test_trigger;
      7  /Trigger created
      

  6.   

    综述:1、多了个分号。
    2、不需要declare。
    3、加冒号
    4、befor---before
    5、test_deq---test_seq
      

  7.   

    这个拼写错误还请见谅
    我刚才按照你的说法输入了一变,这个是解决了,但是出现了一个错误
    ERROR at line 1:
    ORA-04082: NEW or OLD references not allowed in table level triggers
    怎么回事?
      

  8.   

    解决了,刚才是缺少了for each row
      

  9.   

    create trigger test_trigger 
    befor insert on test 
    for each row; 
    declare new.data_id number; 
    begin 
    select test_deq.nextval into new.data_id from dual; 
    end test_trigger;
    ----------------------------------
    都是低级错误
      

  10.   

    问题解决了
    create or replace trigger test_trigger
    before insert on test
    for each row
    begin 
    select test_seq.nextval into :new.data_id from dual;
    end test_trigger;
    /
    谢谢楼上各位