MySQL的ID非常方便定义,只要指定其字段的自动增量属性即可。
但是Oracle不行,需要定义sequence和triggedr,当然trigger可以不定义,但是不方便。
表定义如下:
CREATE TABLE GAME
(
ID INTEGER NOT NULL,
GAME_DATE DATE NOT NULL,
START_TIME DATE,
END_TIME DATE,
GAME_RULE_ID INTEGER
)
我想插入时不必指出Id
INSERT INTO game(game_date, start_time, Game_rule_id)
VALUES (to_date(‘2003/05/03′, ‘yyyy/mm/dd’), to_date(‘21:02:44′, ‘hh24:mi:ss’), 1) ;
首先定义sequence
create sequence game_sequence
start with 1
increment by 1;
然后定义trigger
create TRIGGER game_trigger
BEFORE INSERT
ON game
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT game_sequence.nextval INTO :NEW.ID FROM dual;
END;
查看已经存在的sequence和trigger
SELECT sequence_name FROM user_sequences;
SELECT trigger_name FROM user_triggers;
删除已经定义的sequence和trigger
DROP sequence game_sequence;
DROP trigger game_trigger;
禁用和启用trigger
ALTER trigger game_trigger disable;
ALTER trigger game_trigger enable;