Oracle 创建序列的方法及技巧 日期:2008-06-23] 来源:互联网整理 前面说过,关系数据库的一个最重要的方面是,每个表必须有一个主键
许多情况下,在数据库中创建一个作为标识符的新键列是最容易的
例如, Agents表有一个作为主键的 AgentID列
但是,总是存在一个问题:从何处取得保证唯一的新编号
在一个较大的组织机构中,可能有一个人力资源部,可以建立某种处理,以便新雇员总能分配一个唯一的编号,并且在雇用某人时该数据被录入到表中
但必须有人密切关注所分配的所有编号,并且还需要检验它们唯一性的一个表单
相对于依赖基于人工的处理,让数据库生成用作键值的编号更有意义
oracle为此目的使用序列
序列(sequence)是 Oracle在需要时用来产生新值的一个编号集合
序列的两个关键点是:必须预先建立;需要代码请求生成新值
序列的编号不是在录入新行时自动生成的
你必须编写代码来生成值,并把它们存储在合适的列中
注意,可以对要自动生成编号的表的 Insert事件编写一个数据库触发器
但是,Oracle中最常见的方法是在需要时生成关键值,通常是在表单上生成
一般,在定义原始表时定义一个序列
但是,因为序列与表之间不存在直接的关系,所以可以在创建编号前建立序列
序列只需创建一次,在整个 SQL*Plus中都可以使用
(1) 因为表中已经存在数据,找出其最大值: SELECT Max(AgentID) FROM Agents; (2) 最大值应该为 15521,你可能想从一个比它大的值开始
用 15522就可以了,但为保险起见,从 20000开始: CREATE SEQUENCE seq_Agents INCREMENT BY 1 START WITH 20000; (3) 也是用 SQL检索新值,它自动用序列定义中指定的值给计数器增量
试一下,以保证理解相应的