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
但是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;
相关文章推荐
- oracle 如何实现主键id自增,或自动生成
- Oracle主键ID设置自动增长(序列+触发器)
- 获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- 如何让oracle里面的主键自动递增 autoincrement primary key for oracle
- ibatis获取主键自动增长ID Oracle/MSSQL/mysql
- oracle中如何设置主键并且让其自动增长
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- JSP中如何取得MSSQL数据库表中自动增长的ID主键值?
- oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- oracle插入时如何自动生成主键
- 在ASP.NET+ORACLE添加数据记录并让ID自动增量
- oracle主键自动增长的实现 Oracle Sequence oracle maxid自动生成--ORA-00001: 违反唯一约束条件 (NAME.SYS_C005547)产生的原因之一(select * from all_cons_columns w
- Oracle主键ID设置自动增长(序列+触发器)
- ssm 两表添加,附表如何获得主表自动生成的主键ID
- [导入]在ASP.NET+ORACLE添加数据记录并让ID自动增量
- 如何写出一条SQL语句:取出表A中第31~40条记录(SQLServer,以自动增长的ID作为主键
- 如何在Oracle 中实现类似自动增加 ID 的功能?