###建表###
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/ ,如需转载,请注明出处,否则将追究法律责任。