oracle主键自增长

oracle主键自增长

oracle主键自增长
 
1、比较土鳖的方式
定义主键number类型,之后每次存数据时候,id为取得此表的max(id),之后+1,在存放进去
      可以用时间作为主键,唯一。
2、官方版
      使用序列方式,增长主键。下面介绍使用过程。
创建测试表 t
 
[sql] 
SQL> create table t(  
  2  id number(10) primary key,  
  3  name varchar2(20) not null);  
 www.2cto.com  
Table created  
 
创建序列sequence t_id
 
[sql] 
SQL> create sequence t_id  
  2  start with 2          --以2开始  
  3  increment by 2;       --以2为自增长1、3、5、7...  
   
Sequence created  
 
使用序列
[sql] 
SQL> insert into t values(t_id.nextval,'人1');  
   
1 row inserted  
   
SQL> insert into t values(t_id.nextval,'人1');  
   
1 row inserted  
 www.2cto.com  
SQL> insert into t values(t_id.nextval,'人1');  
   
1 row inserted  
   
SQL> insert into t values(t_id.nextval,'人1');  
   
1 row inserted  
查询表t
 
[sql] 
SQL> select * from t;  
   
         ID NAME  
----------- --------------------  
          2 人1  
          4 人1  
          6 人1  
          8 人1  
 
删除表数据删除表
 
[sql] 
SQL> truncate table t;  
 www.2cto.com  
Table truncated  
   
SQL> drop table t;  
   
Table dropped  
 
恢复删除表
 
[sql] 
flashback table t to before drop;  
 
序列详情介绍
 
[sql] 
--序列  
    /*  
     *需求:在插入记录时,主键值,需要不重复而且唯一,  
     *它的值靠人工生成不太靠普,所以我们需要一个能生成值的一个东西,  
     *这个东西就是序列,序列是一个数据库对象。生成序列的语法:  
     */  
    create sequence [user.]sequence_name  
    [start with n]1  
    [increment by n]/*以n=2为增长1,3,5*/  
    [maxvalue n | nomaxvalue]  
    [minvalue n | nominvalue]  
    [noorder|order]/*多线程,单线程*/  
    [nocycle]   www.2cto.com  
    [cache n]; /*缓存*/  
    --删除序列  
    drop sequence sequence_name;  
    --更改序列 1 3 5  
    alter sequence sequence_name  
    increment by 2  
    maxvalue 80  
    minvalue 1  
    order  
    nocycle  
    cache 2; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值