最近在做系统的Oracle移植,需要从MySQL移植到Oracle中,在MySQL中有自增类型的字段,在Oracle中却没有,需要用其它的办法实现。在Oracle中要用一个SEQUENCE和触发器实现。下面是我的一个实现:
1
CREATE TABLE FOO
2
(
3
INDEX INT NOT NULL,
4
ABC VARCHAR2(128),
5
DEF VARCHAR2(128),
6
PRIMARY KEY (INDEXID)
7
) TABLESPACE TEMP;
8
9
CREATE SEQUENCE FOO_INDEXID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999 CYCLE NOCACHE;
10
11
CREATE OR REPLACE TRIGGER INSERT_FOO_INDEXID
12
BEFORE INSERT ON FOO
13
REFERENCING
14
NEW AS new
15
OLD AS old
16
FOR EACH ROW
17
BEGIN
18
SELECT FOO_INDEXID.NEXTVAL INTO :new.INDEXID FROM DUAL;
19
END;

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

或者:
先建序列,然后建立一个触发器实现!
cata0是表名,cata0_id是需要自增的字段!
CREATE SEQUENCE SEQ_cata0
INCREMENT BY 1
START WITH 1
MAXVALUE 9999999
/
CREATE TRIGGER TRG_cata0 BEFORE
INSERT ON cata0
FOR EACH ROW begin
SELECT SEQ_cata0.NEXTVAL
INTO :NEW.cata0_ID
FROM DUAL;
End TRG_cata0;