ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 创建自动增长的列

创建自动增长的列

原创 Linux操作系统 作者:os-ora 时间:2010-06-28 09:52:37 0 删除 编辑

###建表###

CREATE TABLE "SPORTS"."LINEUP"
(
   "ID"     NUMBER NOT NULL,
   "TYPE"   NUMBER (3) NOT NULL,
   "BODY"   VARCHAR2 (100) NOT NULL,
   "HITS"   NUMBER (10) DEFAULT 0 NOT NULL,
   PRIMARY KEY ("ID")
)
TABLESPACE "TS_SPORTS"

###建序列###

CREATE SEQUENCE "SPORTS"."SPORTS_LINEUP_ID_SEQ"
   INCREMENT BY 1
   START WITH 1
   MAXVALUE 1.0E28
   MINVALUE 1
   NOCYCLE
   CACHE 50
   NOORDER

###建自动更新的触发器###
CREATE OR REPLACE TRIGGER "SPORTS"."SPORTS_LINEUP_ID_TRIGGER"
   BEFORE INSERT
   ON "SPORTS"."LINEUP"
   FOR EACH ROW
DECLARE
   next_id   NUMBER;
BEGIN
   --Get the next id number from the sequence
   SELECT   sports_lineup_id_seq.NEXTVAL INTO next_id FROM DUAL;

   --Use the sequence number as the primary key
   --for the record being inserted.
   :new.id := next_id;
END;

以前建序列时从来没注意过这个选项,总是认为序列就一定是有序的,今天被人问道才注意了一下。原来是在Oracle并行服务器上用到的,我理解是不是在并行情况下,如果序列是noorder的,则取序列号时,先发出命令的实例不一定能取到大的序列。在决大多数情况下是用不到的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16566331/viewspace-666462/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 存储过程+游标
请登录后发表评论 登录
全部评论

注册时间:2010-01-12

  • 博文量
    148
  • 访问量
    410409