请教:在oracle数据库中,我将表A中的ID字段上写了一个触发器,可让该字段的值不用手动添加,可自动增长,但我在写SQL语句时不给该字段不赋值,却报错了,不知是什么原因?

解决方案 »

  1.   

    但我在写SQL语句时不给该字段不赋值,却报错了,不知是什么原因? 没明白.另,oracle可以用序列来实现自增字段
      

  2.   

    CREATE TABLE a
    (id NUMBER PRIMARY KEY,
     cl VARCHAR2(10));
    CREATE SEQUENCE a_seq;
    CREATE TRIGGER a_trigger 
    BEFORE INSERT ON a
    FOR EACH ROW
    BEGIN
      SELECT a_seq.nextval INTO :new.id FROM DUAL;
    END;
    /INSERT INTO a(cl) VALUES('YM');
    INSERT INTO a(cl) VALUES('WB');COMMIT;SELECT * FROM a;        PK CL
    ---------- ----------
             1 YM
             2 WB
      

  3.   

    对于oracle也可以用序列来完成自动增长
    -- Create sequence 
    create sequence INNERID 
    minvalue 1 
    maxvalue 99999999999999 
    start with 1 
    increment by 1 
    cache 20 
    order; ◆2.--INNERID.currval 指当前序列 --INNERID.nextval 指下一个序列 
    create table admin 
    (id varchar2(20),name varchar2(10)); insert into admin values (INNERID.nextval,'a'); 
    insert into admin values (INNERID.nextval,'b'); 
    insert into admin values (INNERID.nextval,'c'); 
    insert into admin values (INNERID.nextval,'d');