oracle新建数据表主键实现自动递增

1.建序列使得递增
例子:
create table ce_book_log(
  id number not null,
  state number,
  content varchar(200) default null,
  bookid varchar(200) default null,
  booktitle varchar(200) default null,
  createat varchar(50) default null,
  constraint PK_ce_book_log primary key (id)
);

create sequence ce_book_log_sequence
     minvalue 1
     maxvalue 9999999999999999999999999999
     start with 1
     increment by 1
     nocache;

CREATE OR REPLACE TRIGGER ce_book_log_trigger
    BEFORE INSERT ON ce_book_log
    FOR EACH ROW
    BEGIN
    SELECT ce_book_log_sequence.nextval INTO :new.id  FROM dual;
    END;


如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

猜你喜欢

转载自577439237.iteye.com/blog/2275832