日期:2014-05-17  浏览次数:21235 次

CREATE SEQUENCE问题
CREATE SEQUENCE FZBG.RD_LXPB_CORRESPONDENCE_SEQU
  START WITH 4201
  MAXVALUE 999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 100
  NOORDER;

主键不是自动加1,都是一百一百的往上蹦。。。请教下,哪里错了。。怎么修改
还有让主键重新从1开始排列。。怎么弄

------解决方案--------------------
SQL code
create sequence FZBG.RD_LXPB_CORRESPONDENCE_SEQU 
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 100;

------解决方案--------------------
先DROP 掉,再RE-CREATE
------解决方案--------------------
SQL code

SQL> drop sequence RD_LXPB_CORRESPONDENCE_SEQU;

序列已丢弃。

SQL> CREATE   SEQUENCE   RD_LXPB_CORRESPONDENCE_SEQU 
  2      START   WITH   4201 
  3      MAXVALUE   999999999999999999 
  4      MINVALUE   1 
  5      NOCYCLE 
  6      CACHE   100 
  7      NOORDER; 

序列已创建。


SQL>  CREATE   TABLE   RD_LXPB_CORRESPONDENCE 
  2  ( 
  3      LXID         NUMBER(20)                                                         NOT   NULL,
 
  4      LXDW         VARCHAR2(50   BYTE), 
  5      SXSJ         DATE, 
  6      LXR           VARCHAR2(50   BYTE), 
  7      XXDH         VARCHAR2(800   BYTE), 
  8      LXZT         VARCHAR2(1000   BYTE), 
  9      LXNR         CLOB, 
 10      YSBH         VARCHAR2(50   BYTE), 
 11      BH             VARCHAR2(50   BYTE), 
 12      CLZT         VARCHAR2(50   BYTE), 
 13      CKZT         VARCHAR2(50   BYTE), 
 14      ORG_ID     VARCHAR2(50   BYTE) 
 15  );

表已创建。

SQL> insert into RD_LXPB_CORRESPONDENCE(LXID)  select RD_LXPB_CORRESPONDENCE_SEQU.NEXTVAL from dual;


已创建 1 行。


SQL> select lxid from RD_LXPB_CORRESPONDENCE;

      LXID
----------
      4201

SQL> insert into RD_LXPB_CORRESPONDENCE(LXID)  select RD_LXPB_CORRESPONDENCE_SEQU.NEXTVAL from dual;


已创建 1 行。

SQL> select lxid from RD_LXPB_CORRESPONDENCE;

      LXID
----------
      4201
      4202

------解决方案--------------------
1)建议你用PLSQL DEVELOPER 查看Sequences的执行情况。
2)以下是我自己在Sql plus里做的测试
SQL code
SQL> create sequence test_seq
  2  increment by 1
  3  minvalue 1
  4  start with 1
  5  nomaxvalue 
  6  nocycle
  7  nocache
  8  /



SQL>  create table test2
  2   (id number(6) primary key,
  3   name varchar2(20));

表已创建。

SQL> create or replace trigger trg_test_id
  2  before insert
  3  on test2
  4  for each row
  5  begin
  6  select test_seq.nextval into :new.id from dual;
  7  end;
  8  /

触发器已创建

SQL> insert into test2(name)
  2  values('&name');