Oracle 如何定义自动增量autocreament的主键ID?
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;
相关文档:
我的安装过程
1、编辑 /etc/apt/sources.list :
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
sudo gedit /etc/apt/sources.list
加入下面这个源:
deb http://oss.oracle.com/debian unst ......
SQLServer和Oracle是大家经常用到的数据库,在此总结出这些常用函数以供
大家参考。
数学函数
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:s ......
我是个新手,所以有些说的可能会不好,希望阅读这文章的人见谅啊.
一般关于ID自增的网上都有了很多了,呵呵^那我就简单的说一下: 先创建表,再创建序列:
create sequence 序列名
&nb ......
索引
唯一索引:
列中无重复值,唯一约束。
oracle自动为主键和为一键列创建唯一索引
语法:create unique index 索引名 on 表名(列名);
组合索引:
在表中多个字段上创建的索引
列按任意顺序排列
where子句中包含多个列的查询,可提高访问速度。
语法:create index 索引名 on 表名(列名1,列名2,...,列名n):
反 ......
关系型数据库理论中字段值必须是单值,而oracle中允许在一个字段中存储一个表的内容。
如:员工表中的外键 部门编号,oracle中这个字段可以存放部门的记录而并不是一个外键,这样查询时候的效率会提高。
可变数组:
创建带有可变数组的表
创建可变数组基类型
create or replace type 基类型名 as object(字段清单);
......