您的位置:首页 > 数据库 > Oracle

Oracle 如何定义自动增量autocreament的主键ID?

2010-03-09 00:50 651 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐