第15章序列 序列是Oracle数据库的特色对象之一。通过序列,可以 轻松获得惟一的整数。序列具有多个属性来设置取值方式, 这使得很多应用变得简化而灵活。在Oracle开发中,序列最 常见的功能为数据表提供自增列值。本章的主要内容包括: 创建序列; 使用序列; 修改序列属性。 通过本章的学习,读者可以明确序列的概念,并掌握 在开发中如何使用序列
Oracle Oracle
15.1自动生成序号 无论哪种数据库,自动生成序号都是必不可少的需求 之一。本节将简要介绍主流数据库中的自动生成序号使用的 策略
15.1.1什么是自动生成序号 很多时候,表设计者会将数据表的主键设计为一个与 业务无关的数值型。这样既可以保证每个数据表都具有通用 的主键,又剔除了主键与业务的相关性。但是,在应用层为 列指定主键值显然不是一种好的选择。因此,很多数据库都 会提供将列设置为自增类型,从而在数据库层面上解决该问 题。自动生成序号策略要求在数据库层、无需人工干预即可 获得序号
很多时候,表设计者会将数据表的主键设计为一个与 业务无关的数值型。这样既可以保证每个数据表都具有通用 的主键,又剔除了主键与业务的相关性。但是,在应用层为 列指定主键值显然不是一种好的选择。因此,很多数据库都 会提供将列设置为自增类型,从而在数据库层面上解决该问 题。自动生成序号策略要求在数据库层、无需人工干预即可 获得序号
15.1.2主流数据库的自动生成序号策略 在SQL Sever中,提供了identity类型一表示自增类型。用 户通过将列设置为自增列来保证列值具有唯一的序号。例如,在 创建表时使用如下SQL语句即可。 create table test( id int identity(1,1), name varchar(20))
SQL Sever identity —— SQL create table test( id int identity(1,1), name varchar(20))
15.2创建和使用序列 序列(SEQUENCE)如同表、约束、视图、触发器等 一样,是Oracle数据库对象之一。一旦创建,即可保存于数 据库中,并可在适用场合进行调用。 在示例14-7的触发器中,我们利用首先获得表 employees中最大employee_id并加l的方法来获得新记录的 员工D。对于用户来说,这种方式显得过于繁琐。本小节将 利用序列来处理这一问题
SEQUENCE Oracle 14-7 employees employee_id 1 ID