学习了序列,一直没怎么有机会用过,做了个简单的使用练习。
在Oracle中,可以使用序列自动生成一个整数序列,主要用来自动为表中的数据类型的主键列提供有序的唯一值,这样就可以避免在向表中添加数据时,手工指定主键值。而且使用手工指定主键值这种方式时,由于主键值不允许重复,因此它要求操作人员在指定主键值时自己判断新添加的值是否已经存在,这很显然是不可取的。
(1)创建序列
序列与视图一样,并不占用实际的存储空间,只是在数据字典中保存它的定义信息。创建序列需要使用CREATE SEQUENCE语句,其语法如下:
CREATE SEQUENCE [schema]。sequence_name
[ START WITH start_number ]
[ INCREMENT BY increment_number ]
[ MINVALUE minvalue | NOMINVALUE ]
[ MAXVALUE maxvalue | NOMAXVALUE ]
[ CACHE cache_number | NOCACHE ]
[ CYCLE | NOCYCLE ]
[ ORDER | NOORDER ];
注意:cache参数指定内存预分配的序列数的个数,默认20个,为了加快访问速度。
(2)序列中的两个伪列
- 首先创建student表:
-
创建student_seq序列
- 创建触发器(使用student_seq序列)
- 插入数据:
- 查询数据:
- SQL> select * from student;
-
SID SNAME
---------- --------
1 zhang
2 li
3 wang