我想实现表记录数的自增长,按网上写的方法用的是
create table example(
       id number(4) not null primary key,
       name varchar2(25),
       phone varchar2(10),
       address varchar2(50)
);--然后需要自定义一个sequence
create sequence emp_sequence
increment by 1  --每次加几个
start with 1    --从1开始计数
nomaxvalue      --不设置最大值
nocycle         --一直累加,不循环
nocache         --不建缓冲区 --有个表和序列还需要一个触发器
create or replace trigger emp_trigger before
insert on example for each row when(new.id is null)
begin
  select emp_sequence.nextval into:new.id from dual;
  end;但是这样不就是要每写一张表就要定义一个sequence和一个触发器?感觉好麻烦啊 

解决方案 »

  1.   

    不是一个表就需要一个 sequence的,而是一个数据库就需要这么一套定义的。这些定义都存在USER_SEQUENCES里面,你只要查一查这个表就明白了。自己看一看SELECT * FROM USER_SEQUENCES
      

  2.   

    饿 还是不明白  其实我对pl/sql编程 还是不太清楚  那个sequence和触发器的语法是什么意思都还搞不懂...我查了一下SELECT * FROM USER_SEQUENCES显示结果是:
    SEQUENCE_NAME  MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE Last
    BLOG_BLOG_SEQUENCE  1      1E28        1        N           N            0        10
    ...
    都是创建过的一些sequences然后..不明白
      

  3.   

    insert into example values(emp_sequence.nextval,...);
      

  4.   

    1. 网上给的表记录数的自增长方法是标准的方法。这样做看着简单明了。
    2. insert into example(id) values (select max(id) +1  from example)。这样也能实现自动增长。