Oracle自增ID实现
首先,你要有一张表!
CREATE TABLE example(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
PHONE VARCHAR(10),
ADDRESS VARCHAR(50) );
然后,你需要一个自定义的sequence
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq
,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!跑题了!)
书接上文,你只有了表和序列还不够,还需要一个触发器来执行它!代码如下:
CREATE TRIGGER "触发器名称" BEFORE
INSERT ON example FOR EACH ROW WHEN (new.id is null)
begin
select emp_sequence.nextval into: new.id from dual;
end;
打完收工!下面你就试试插入数据吧!
INSERT INTO example
相关文档:
28.2.4 安装Oracle 11g
Oracle 11g提供了图形化的安装界面,用户可通过移动和单击鼠标完成安装过程。具体安装步骤如下所示。
(1)解压Oracle 11g安装包文件。
unzip linux_11gR1_database_1013.zip
文件将会被解压到linux_11gR1_database_1013目录下,如下所示。
# ls
doc inst ......
原文地址:http://fandayrockworld.javaeye.com/blog/540509
回顾:
一、 ROWID的概念
存储了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /,
row在数据块中的存储方式
SELECT ROWID, last_name from hr.employees WHERE department_id = 20;
比如:OOOOOOFFFBBBBBBRRR
......
28.4.1 手工启动和关闭Oracle服务
Oracle数据库服务由两部分组成:数据库进程和网络监听器进程,它们分别可通过sqlplus和lsnrctl命令控制启动关闭。
1.数据库进程
使用DBCA工具创建数据库后,其进程已经自动启动,这些进程都是以数据库名称(在本例中为orcl)命名,如下所示。
$ ps -ef|grep orcl
orac ......
oracle的分析函数over 及开窗函数
一:分析函数over
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是
对于每个组返回多行,而聚合函数对于每个组只返回一行。
下面通过几个例子来说明其应用。 &nb ......