自增字段

本文介绍了在Oracle数据库中如何实现表的自增主键,包括创建用户数据表、自动增长序列及触发器的方法,并对比了MySQL的自增主键实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

Oracle

 

1、建用户数据表
      drop table dectuser;
      create table dectuser(
           userid integer primary key, /*主键,自动增加*/
           name varchar2(20),
          sex varchar2(2)
           );

2、创建自动增长序列
      drop sequence dectuser_tb_seq;
      create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999
               increment by 1
               start with 1;   /*步长为1*/

 

         a.查询序列的下一次,每查询一次,都会引起序列当前的变化
  
       select dectuser_tb_seq.nextval from dual
  
     b.查询序列的当前值,不会引起序列当前值的变化
 
    select dectuser_tb_seq.currval from dual

 


3、创建触发器
      create or replace trigger dectuser_tb_tri
          before insert on dectuser     /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
           for each row                 /*对每一行都检测是否触发*/
           begin                        /*触发器开始*/
                 select dectuser_tb_seq.nextval into :new.userid from dual;   /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
            end;
           /*退出sqlplus行编辑*/
4、提交
       commit;

       现在就完成了自增主键的设定,搞定!可以检测一下。
      insert into dectuser(name,sex) values ('wang','女');
****************************************************************************************************

总的来说,通过在insert操作之前,添加一个触发器,将序列的值放到了将要插入的数据的ID中。
所以,需要 建表->建序列->建触发器 这样一个过程。
我觉得有几个要注意的
一是主键类型为 INT型比较好。
二是触发器主题内容中,select...into 后面的冒号不能掉了。

 

转载:

http://blog.youkuaiyun.com/wangzwhu/archive/2008/10/29/3173918.aspx

 

 

 

Mysql:

 

比如有个表:

 

CREATE TABLE `person` (                               
          `id` int(10) NOT NULL AUTO_INCREMENT,               
          `name` varchar(20) NOT NULL,                        
          PRIMARY KEY (`id`)                                  
        ) ENGINE=InnoDB AUTO_INCREMENT=123456 DEFAULT CHARSET=gbk 

 

 

这里就建立了一个person表,id 字段自动增加,每次增加1,从123456开始,注意表一定要有主键

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值