CREATE TABLE example(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
PHONE VARCHAR(10),
ADDRESS VARCHAR(50));
CREATE SEQUENCE empdd
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
//出发器
CREATE TRIGGER sbbb BEFORE
INSERT ON example FOR EACH ROW WHEN (new.id is null)
begin
insert emp_sequence.nextval into new.id from dual;
end;
想让数据插入的时候 表自己给ID赋值 但说我 触发器写错 看了半天不知道错哪了 请各位帮帮忙 

解决方案 »

  1.   


      if :New.id is null then
        :New.id := emp_sequence.nextval;
      end if;
      

  2.   

    或者 select emp_sequence.nextval into new.id from dual; 
      

  3.   

    我帮你写一个完整的示例吧
    create table test1(id int not null, col2 varchar(32))
    /SQL> create sequence tseq;序列已创建。SQL> create trigger t before
      2  insert on test1 for each row when(new.id is null)
      3  begin
      4  select tseq.nextval into :new.id from dual;
      5  end;
      6  /触发器已创建SQL> insert into test1 values(null, 'wang');已创建 1 行。SQL> select * from test1;        ID NAME
    ---------- ----------
             1 wangSQL>