SQL> create table Deom3(
  2             deomid number(10) primary key,
  3             deomname varchar2(20)
  4             );
 
Table created
 
SQL> 
SQL> CREATE SEQUENCE Deom3_Sequence
  2   INCREMENT BY 1
  3       START WITH 1
  4       NOMAXVALUE
  5       NOCYCLE
  6       CACHE 10;
 
Sequence created
 
SQL> 
SQL> CREATE TRIGGER Deom3_Increase BEFORE
  2  insert ON  Deom FOR EACH ROW
  3  begin
  4  select Deom3_Sequence.nextval into:New.deomid from dual;
  5  end;
  6  
以上是我从网上找到的关于设置主键自增的一段代码,第一段是创建一个表,第二段是创建一个序列,第三段应该就是创建触发器了吧,可是为什么前面两段代码都能运行,到了第三段就卡住了?而且后面不能操作,输入指令在回车还是行数继续往下涨,没有出现“SQL>”  我每次都是切换窗口才能继续操作,这是为什么     而且这段代码好像不起作用,后面再插入数据的时候就会报错,如下:
SQL> insert into Deom3(deomname) values('test');
 
insert into Deom3(deomname) values('test')
 
ORA-01400: cannot insert NULL into ("SYSTEM"."DEOM3"."DEOMID")
 
SQL> 
是因为第三段的触发器代码没有执行的原因嘛?
搞这个问题搞一天了,拜托各位高手给解决一下啊!!!谢谢啊!!!

解决方案 »

  1.   

    没问题啊
    SQL> 
    SQL>  create table Deom3(
      2     deomid number(10) primary key,
      3     deomname varchar2(20)
      4     );
     
    Table created
     
    SQL> 
    SQL> CREATE SEQUENCE Deom3_Sequence
      2     INCREMENT BY 1
      3     START WITH 1
      4     NOMAXVALUE
      5     NOCYCLE
      6     CACHE 10;
     
    Sequence created
     
    SQL> 
    SQL> CREATE TRIGGER Deom3_Increase BEFORE
      2     insert ON Deom3 FOR EACH ROW
      3     begin
      4     select Deom3_Sequence.nextval into:New.deomid from dual;
      5     end;
      6  /
     
    Trigger created
     
    SQL> insert into deom3(deomname) values('test');
     
    1 row inserted
     
    SQL> select * from deom3;
     
         DEOMID DEOMNAME
    ----------- --------------------
              1 test
     
    SQL> 
      

  2.   

    trigger里的表名是不是写错了?
      

  3.   

    --表名不一致的问题
    SQL> CREATE TRIGGER Deom3_Increase BEFORE
      2 insert ON Deom3 FOR EACH ROW
      3 begin
      4 select Deom3_Sequence.nextval into:New.deomid from dual;
      5 end;
      6   
      

  4.   


    SQL> create table Deom3(
      2  deomid number(10) primary key,
      3  deomname varchar2(20)
      4  );表已创建。SQL> CREATE SEQUENCE Deom3_Sequence
      2  INCREMENT BY 1
      3  START WITH 1
      4  NOMAXVALUE
      5  NOCYCLE
      6  CACHE 10;序列已创建。SQL> edi
    已写入 file afiedt.buf  1  CREATE TRIGGER Deom3_Increase BEFORE insert ON Deom3 FOR EACH ROW
      2  begin
      3  select Deom3_Sequence.nextval into :New.deomid from dual;
      4* end;
    SQL> /触发器已创建SQL> insert into Deom3(deomname) values('test');已创建 1 行。SQL> commit
      2  /提交完成。SQL> select * from deom3
      2  /    DEOMID DEOMNAME
    ---------- --------------------
             1 test
      

  5.   

    问题解决了终于解决了!!!最后结尾的地方end;后面少了个“/” T-T!!!
    谢谢在水一方谢谢 555555555555555555555555
      

  6.   

    问题已经解决了,谢谢大家!  以后知道“/”是完结用的了现在公司要用Oracle,分配给我一个用Oracle的任务,这几天搞的很头疼啊~~~ 不过还是谢谢大家啊!