Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64922
  • 博文数量: 19
  • 博客积分: 310
  • 博客等级: 一等列兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-21 21:10
文章分类
文章存档

2011年(19)

我的朋友

分类: Oracle

2011-11-20 18:42:09

1. 序列是oracle提供的用于生成一系列唯一数字的数据库对象。序列不占用实际的存储空间,只是在数据字典中保存它的定义信息。
2. 创建序列:
  权限:create sequence;create any sequence;
  语句:create sequence seq_name
        [start with n]
        [increment by n]  //默认是1
        [minvalue n | nominvalue]
        [maxvalue n | nomaxvalue]
        [cache n | nvache]  //是否产生序列号预分配,并存储在内存中;
        [cycle | nocycle] 
        [order | noorder];  //保证生成的序列值是是按顺序产生的。
      列子:
        create sequence deptno_seq
        maxvalue 99
        start with 50
        increment by 10
        cache 10;
       
        insert into scott.dept(deptno,dname,loc)
        values(deptno_seq.nextval,'development',default);
       注:序列的两个伪列:nextval,currval。
           在为表生成主键值时,通常是为表创建一个行级触发器,然后在触发器中使用序列替换用户提供的值。
3. 修改序列
  alter sequence deptno_seq
  maxvalue 200
  cache 3;  //start with不能改,其他都可以
4. 查询用户的序列
   desc user_sequences
   select * from user_sequences where sequence_name='DEPTNO_SEQ';
5.删除序列
   drop sequence deptno_seq;
    
阅读(1331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~