有些时候我们设计表可能没想到使用主键,或者不用主键可以完全满足,但是后来由于需求等改变,需要对已经有数据的表再加入主键,由于暂且没有想到更简单的办法,所以给大家分享一下我的办法。

比如有以下表aa,给aa表加入一个字段id作为主键;

(1)首先创建序列号,作为自增主键

create sequence SEQ_AA
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

(2)执行sql语句

update aa t set t.id= seq_aa.nextval

然后将id设置为不为空alter table aa modify id not null;再把id作为主键:alter table AA  add constraint Pk_AA primary key (ID);

即可

如果觉得执行两三条语句麻烦,将(2)执行sql改成执行存储过程如下亦可

create or replace package body AHJTEST is
procedure TABLEIDTEST isV_id   varchar2(200); --存放id   V_ROWS varchar2(200); --物理地址cursor cur1 isselect aa.rowid from AA;beginexecute immediate 'alter table AA add id NUMBER';--增加id字段for V_ROWS in cur1 LOOPbeginselect seq_aa.nextval into V_id from dual;execute immediate 'update aa t set t.id=' || V_id ||' where t.rowid=' || '''' || V_ROWS.ROWID || '''';--根据物理地址----更新idcommit;EXCEPTIONWHEN OTHERS THENROLLBACK;raise;END;end loop;execute immediate ' alter table aa modify id not null';--设置id不为空execute immediate 'alter table AA  add constraint Pk_AA primary key (ID)';--设置id为主键end TABLEIDTEST;end TABLEIDTEST;end AHJTEST ;

然后就可以看到效果了,id已经有值,不为空,而且作为主键。(两种方法效果一样)

表中已存在数据,增加主键,序列号相关推荐

  1. Oracle表中已有数据修改字段类型

    Oracle的表中已存在了数据,这时再来修改表的字段类型就无法修改.例如, number类型改成number(22),这时数据库会报ORA-01440: column to be modified m ...

  2. mysql一个表中可以有几个主键_数据库的单个数据表中有几个主键?

    数据库的单个数据表中只能有一个主键.数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性:主键主要是用与其他表的外键关联,以及本记录的修改与删除. 数据库的单 ...

  3. SQL Server 用表中已有数据造数据

    从表中选择数据再插入到表中(select XXX into 与insert into XXX select的结合) 在做性能测试时需要大量的业务数据.完全从画面造数据比较费时间,使用SQL文批量插入数 ...

  4. sql 清空表数据、删除表数据、主键从1开始

    清空表数据 truncate table 表; 可以清除表的数据,如果有设置主键的话,再添加数据的时候主键ID还是从1开始 delete from 表; 然后重新添加数据即可.  主键从1开始

  5. SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束

    什么是约束? 数据库-由若干张数据表组成(理解为一个类库) 数据表-由行和列组成的一个二维数组(理解为一个类) 列-字段(理解为表中对象的一个属性) 行-理解为表中的一个对象 约束是数据库中保证数据完 ...

  6. bigint如何自增_SQ数据库中怎样设置自增主键?

    展开全部 通过int或bigint设置. 自增列的类型应为int或bigint型,可以设置起始和每32313133353236313431303231363533e59b9ee7ad943133343 ...

  7. MSSQL如何在没有主键的表中删除重复数据

    MSSQL如何在没有主键的表中删除重复数据 原文:MSSQL如何在没有主键的表中删除重复数据 为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create datab ...

  8. DataBase First 基础(四) 删除或修改表时失败,因为相同类型的其他实体已具有相同的主键值***

    一.删除操作.错误信息 删除操作: #region 遍历,删除foreach (PatientInfoHistroryModel patient in deletePatients){//Patien ...

  9. postgre 主键_PostgreSQL数据库修改表增加主键

    PostgreSQL数据库测试环境中有多张表没有添加主键约束,只有一个serial的自增字段.现在需要把那些没有主键的表都加上,serial类型的字段为id . 首先是怎么找到PostgreSQL数据 ...

最新文章

  1. 合并底稿分析,数据线索追溯
  2. Visual Tracking:运行ECO模型
  3. 深度学习之windows python faster rcnn 配置及demo运行
  4. 保险条款精解(二) 丢车——如何将损失降到最低点?
  5. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。...
  6. oracle虚拟机装flash,oracle log_archive_dest_1 未指定导致flash_recovery_area引发数据库挂起...
  7. [LeetCode] Decode Ways [33]
  8. sodp软件如何导入多个工作面信息_6款堪称业界良心的软件,好用到想为它们疯狂打call!...
  9. 利用matlab实现h 控制,利用matlab实现H-infinity鲁棒控制
  10. Adobe Bridge使用教程:BR键盘快捷键大全
  11. 微信小程序网易云音乐获取视频列表数据(需要登录获取携带cookie)
  12. LeetCode 5855. 找出数组中的第 K 大整数(自定义排序函数)
  13. spring cloud alibaba全家桶之nacos
  14. 机器学习03:人工神经网络
  15. 快速识记会计中的借贷两方
  16. 武器目标分配问题研究进展: 模型、算法与应用
  17. 痞子衡嵌入式:IAR环境下无法直接下载调试i.MXRT分散链接工程的解决方案(宏文件.mac+双Flashloader)...
  18. React 动效 Framer motion,给你的页面添加一点动感
  19. 转载--成功应聘Intel的真实经历
  20. jenkins + jmeter +ant 发送邮件失败

热门文章

  1. git 仓库:git 拉取分支到本地
  2. 震源机制(Focal Mechanism)之沙滩球(Beach Ball)
  3. 软件测试工程师前景如何?主要做些什么工作?
  4. 半正矢公式:根据经度纬度计算两点间距离
  5. 雅虎yisou.com网站名是否的剽窃!!!
  6. 软件构造--Chapter10-12小结
  7. [Java] Application provided invalid, non monotonically increasing dts to muxer in stream 0
  8. 欧几里得、扩展欧几里得、同余
  9. java sha256 实现_JAVA SHA256加密代码实现
  10. (转)弹出窗口lhgDialog API文档