oracle数据库中怎么给已经在使用的表添加主键id的解决方法

  1. 新建id字段(这个就不用说了微笑
  2. 因为已经使用的表中有一些旧数据了,在不能删除的情况下必须批量添加id,方法是:
    update T_TEST  set I_ID=rownum
    commit;
    这样 所有旧数据就会按顺序加上I_ID,假如末尾的I_ID为100.
  3. 要创建T_test表的序列,序列的Start with是从末尾Id上面的是100开始

    Create sequence 
    Increment by 1
    Start with 100
    NOMAXVALUE 
    Minvalue 1
    Nocycle
    nocache;
    创建好序列之后,有两种方式实现主键ID递增

  • 第一种用nextval可以写到项目的连接数据库的xml的sql中

select sep_test_id.nextval from dual 

查询出下一个主键id的序列索引

  • 用数据库储存语言创建触发器实现I_ID递增

    create or replace trigger tri_test_id
      	before insert on  T_COMPANY_MAGAZINE 
     	 for each row
    	declare nextid number;
    	begin
      	IF :new.I_ID IS NULLor :new.I_ID=0 THEN     	
    Select T_COMPANY_MAGAZINE_SEP.nextval
        	into nextid
        	from sys.dual;
        	:new.I_ID :=nextid;
      	end if;
    	end tri_test_id;
    我用的第一种,这一种知道方法但是未尝试


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值