一个数据库操作的问题

时间:2021-07-10 10:18:10
我现在做一个网站,用的是oracle数据库。前几天导入了一个表,但是少了字段,现在有要添加上去,这个新添加的字段应该是自动增加的。但是数据库现在几经有10000多条记录了,有什么办法能将现在几经有的纪录的这个字段添加上数据。这些数据没有顺序要求,只要能将这10000多条的数据添加上一个数字,数字是从1开始的就行了。

6 个解决方案

#1


最简单的办法:自己写个程序加吧.

#2


oracle 中没有办法?

#3


修改表结构、建立序列,写一个存储过程
alter table t_1 add(id number);
create sequence s_1 increment by 1 start with 1 maxvalue 999999 minvalus 1;
create or replace procedure p_1 is
   cursor cursor1 is select id from t_1 for update;
   v_id cursor1.id%type
begin
       for id_record in cursor1 loop
           update t_1 set id=s_1.nextvalue;
       end loop; 
        
end; 

没测试过,仅供参考

#4


修改一下上面的存储过程
create or replace procedure p_1 is
   cursor cursor1 is select id from t_1 for update;
   v_id cursor1.id%type
begin
       loop
        fetch cursor1 into v_id;
        exit when cursor1%notfound;
        if v_id is null then
            update t_1 set id=s_1.nextvalue where current of cursor1;
        end if;
       end loop;
      
end; 

#5


alter table t_1 add(id number);
create sequence seq_id increment by 1 start with 1 ;

update t_1 set id=seq_id.nextval;
commit;

#6


我是个新手,我不知道存储过程在那里运行,也不知道那些语句的意思,虽然我用oracle。
所以我想小声地问一下那个存储过程怎么用?
 dacong(大聪)这位大哥的语句能在sqlplus 里运行。也成功。谢谢!

这是我在sqlplus中运行那个存储过程
SQL> create or replace procedure p_1 is
  2  cursor cursor1 is select tenementid from tenement for update;
  3  v_id cursor1.id%type   (这句话不知道什么意思!)
  4  begin
  5         loop
  6          fetch cursor1 into v_id;
  7          exit when cursor1%notfound;
  8          if v_id is null then
  9  update tenement set tenementid sq_id.nextvalue where current of cursor1;
 10          end if;
 11         end loop;
 12        
 13  end; 
 14  /

#1


最简单的办法:自己写个程序加吧.

#2


oracle 中没有办法?

#3


修改表结构、建立序列,写一个存储过程
alter table t_1 add(id number);
create sequence s_1 increment by 1 start with 1 maxvalue 999999 minvalus 1;
create or replace procedure p_1 is
   cursor cursor1 is select id from t_1 for update;
   v_id cursor1.id%type
begin
       for id_record in cursor1 loop
           update t_1 set id=s_1.nextvalue;
       end loop; 
        
end; 

没测试过,仅供参考

#4


修改一下上面的存储过程
create or replace procedure p_1 is
   cursor cursor1 is select id from t_1 for update;
   v_id cursor1.id%type
begin
       loop
        fetch cursor1 into v_id;
        exit when cursor1%notfound;
        if v_id is null then
            update t_1 set id=s_1.nextvalue where current of cursor1;
        end if;
       end loop;
      
end; 

#5


alter table t_1 add(id number);
create sequence seq_id increment by 1 start with 1 ;

update t_1 set id=seq_id.nextval;
commit;

#6


我是个新手,我不知道存储过程在那里运行,也不知道那些语句的意思,虽然我用oracle。
所以我想小声地问一下那个存储过程怎么用?
 dacong(大聪)这位大哥的语句能在sqlplus 里运行。也成功。谢谢!

这是我在sqlplus中运行那个存储过程
SQL> create or replace procedure p_1 is
  2  cursor cursor1 is select tenementid from tenement for update;
  3  v_id cursor1.id%type   (这句话不知道什么意思!)
  4  begin
  5         loop
  6          fetch cursor1 into v_id;
  7          exit when cursor1%notfound;
  8          if v_id is null then
  9  update tenement set tenementid sq_id.nextvalue where current of cursor1;
 10          end if;
 11         end loop;
 12        
 13  end; 
 14  /