用Delphi做数据录入,表A的主键是ID,建了一个序列A_E让其自增一,用PLSQL直接添加数据可以,用Delphi做的程序就不行,因为没有取得ID的值。要求不用INSERT INTO 的方式,并且要用序列。

解决方案 »

  1.   

     试试将主见ID的默认值设置为序列的nextval。
      

  2.   

    -- Create sequence 
    create sequence seq_id
    minvalue 0
    maxvalue 99999999
    start with 1
    increment by 1
    cache 20;create table tmp1( cid number,cname varchar2(100));
    insert into tmp1 select seq_id.nextval,'1' from dual;
    commit;
    begin
    self.ADOCommand1.CommandText:='insert into tmp1 values( seq_id.nextval,''2'')';
    self.ADOCommand1.Execute;
    end;select * from tmp1;
    cid     cname
    1 1
    2 2
      

  3.   

    把你的DELPHI代码贴上来看看。
    用Delphi做的程序就不行--是不是你没把数据提交至数据库。
      

  4.   

    注意啊,我说了不能用Insert Into 的方式,程序是通用的数据录入,别的都没有问题,只有单一主键用序列的不行
      

  5.   

    >>用PLSQL直接添加数据可以
    怎么个可以?把你的plsql可以的代码贴出来看看
      

  6.   

    你不能完全用sqlserver/access的思想去考虑oracle
      

  7.   

    做数据录入,不用insert??
    给出你的pl/sql,我想见识一下
      

  8.   

    两种解决办法
      1,用Oracle 的 Sequence && Trigger ,在Insert语句commit后自增字段起效,Insert语句不用去管自增字段
      2,用Oracle 的 Sequence,不使用Trigger,Insert语句中需要指定自增字段的值为Sequence的NextVal,然后commit;