可是和MS-SQL Server和IBM DB2相比,还是不够方便。表(数据库)的设计者和sql语句的编写者通常不是一个人,普通sql语句的编写者也不愿意了解太多的数据库设计细节,所以,习惯了MS-SQL Server和IBM DB2的程序员怕难以接受Oracle这个特性。

解决方案 »

  1.   

    用序号生成器可以得到这种效果,用法如下建立序号生成器
     CREATE  sequence  addid1  increment by 1  START WITH 1;  
    得到当前的序号: 
       select addid1.currval from dual ;
    得到下一个序号: 
       select addid1.nextval from dual ;
       insert into dept values(seq1.nextval,...) ;
      

  2.   

    '所以,习惯了MS-SQL Server和IBM DB2的程序员怕难以接受Oracle这个特性。'呵呵,那就只能让他们接受这个特性.
    to(心雨):重建序列规0.或者创建循环序列,到max值之后自动从min值开始
      

  3.   

    先建一个sequence,再建一个trigger,然后在Insert语句中你就不用在理这个自动增长的字段了。
    example:
    1:sequence:
       CREATE SEQUENCE seq_TlogList start with 1 increment by 1;
    2: trigger:
       CREATE OR REPLACE TRIGGER tr_TlogList_Insert
       BEFORE INSERT ON TlogList
       FOR EACH ROW
       BEGIN
         SELECT seq_TlogList.nextval
           INTO :new.serial_no
         FROM dual;
       END tr_TlogList_Insert;一切OK了。