我往一张表里插入数据时,由于主键ID是自动增长的,我就没给值;如下:
 insert into os_currentstep(ACTION_ID,START_DATE,STATUS,STEP_ID ,ENTRY_ID) values(0,vc_sendtime,'Queued',2,vc_procces_id); 
 vc_sendtime和vc_procces_id是变量;它老是说id不能为空,这怎么办呀?

解决方案 »

  1.   

    create a sequence ,insert sql should be like this: insert into XXX (id ,name) values(seq_id.nextval,"name");seq_id is the sequence name
      

  2.   

    是你的主键自动增长功能没有作好吧。应该这样做:
    1.建立表格:
    CREATE TABLE Table1
    (
    CID NUMBER(8) NOT NULL,
    Others VARCHAR2(20)
    );
    2.建立从1开始的序列:
    CREATE SEQUENCE emp_sequence
    INCREMENT BY 1 -- 每次加几个
    START WITH 1 -- 从1开始计数
    NOMAXVALUE -- 不设置最大值
    NOCYCLE -- 一直累加,不循环
    NOCACHE -- 不建缓冲区 3.建立触发器:
    CREATE OR REPLACE TRIGGER myTGR
    BEFORE INSERT ON Table1 FOR EACH ROW
    BEGIN
    SELECT emp_sequence.NextVAl INTO :new.CID FROM dual;
    END;
      

  3.   

    非常感谢上面两位的回答,可是我的id是通过hibernate自动生成的呀,如:
    ID
    8aa4e0ef15031b5001150330c50c0005
    8aa4e0ef15031b5001150332d7fe0006
    8aa4e0ef15031b500115033337060007
    用上面的方法好象不可以哟!有没有其它的方法呢?