【转】oracle自增主键的添加[sequence]

注意点:

1:一个sequence可以被多个表共享。

2:被多个表共享的sequence生成的数字序列始终连续,不会重新开始。

3:如果不再使用的sequence请删除。

SELECT * FROM DAYSBFJ.DAYS_CARD_UPDATE3 order by id asc
--alter table DAYSBFJ.DAYS_CARD_UPDATE3 add source_Flag varchar2(2);
--create sequence DAYS_CARD_UPDATE2_SEQ_ID minvalue 1 maxvalue 999999999 start with 1;
--Update DAYSBFJ.DAYS_CARD_UPDATE2 set id = DAYS_CARD_UPDATE2_SEQ_ID.nextval;
--update DAYSBFJ.DAYS_CARD_UPDATE3 set SOURCE_FLAG = ‘2‘

一个例子:

新建一个缺少主键的表

create table test1(name1 varchar2(40),city varchar2(40));
--插入数据
insert into test1 values(‘name1‘,‘nanjing‘);
insert into test1 values(‘name1‘,‘nanjing‘);
insert into test1 values(‘name2‘,‘nanjing1‘);
insert into test1 values(‘name3‘,‘nanjing2‘);
insert into test1 values(‘name4‘,‘nanjing3‘);
insert into test1 values(‘name5‘,‘nanjing4‘);
insert into test1 values(‘name6‘,‘nanjing5‘);
insert into test1 values(‘name7‘,‘nanjing6‘);
insert into test1 values(‘name8‘,‘nanjing7‘);
insert into test1 values(‘name9‘,‘nanjing8‘);
insert into test1 values(‘name10‘,‘nanjing9‘);
insert into test1 values(‘name10‘,‘nanjing9‘);
insert into test1 values(‘name12‘,‘nanjing11‘);
insert into test1 values(‘name13‘,‘nanjing12‘);
insert into test1 values(‘name14‘,‘nanjing13‘);
commit;

--增加主键ID
alter table TEST1 add id number(10);

--设置sequence使ID自增
create sequence SEQ_ID
  minvalue 1
  maxvalue 999999999
  start with 1;

--将id的值设置为sequence
Update test1 set id=seq_id.nextval;
commit;

--设置id为主键 
alter table TEST1
  add constraint PK_TEST1 primary key (ID);
  
select ID,Name1,CITY from TEST1;
时间: 2024-10-18 06:57:41

【转】oracle自增主键的添加[sequence]的相关文章

Oracle自增主键的添加[sequence]--表数据已存在

--增加主键ID alter table CLERK_COMPARE add id number(16); --设置sequence使ID自增 create sequence SEQ_ID minvalue 1 maxvalue 999999999 start with 1; --将id的值设置为sequence Update clerk_compare set id=seq_id.nextval; commit; --设置id为主键 alter table CLERK_COMPARE add

EntityFramework实体默认值遇到Oracle自增主键

1. Oracle实现主键自动增长 一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现. 定义序列用于获取递增数字 CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] 定义触发器,关联序列和表,并在插入数据前补充主键ID create [

oracle 触发器实现主键自增

drop table book; --创建表 create table book( bookId varchar2(4) primary key, name varchar2(20) ); --创建序列 create sequence book_seq start with 1 increment by 1; --创建触发器 create or replace trigger book_trigger before insert on book for each row begin select

mybatis 添加事物后 无法获取自增主键的问题

检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的, 我在mysql的客户端里关闭自动提交,发现使用select last_insert_id() 也是可以正确获取最新主键的, 我意识到可能是mybatis配置的问题. 问同事后发现了问题,将 defaultExecutorType 从 BATCH 改为 SIMPLE 即可. 1 <?xml version="1.0" encoding="UTF-8"

oracle 实现 自增主键功能

转自:https://blog.csdn.net/zxh2075/article/details/78488141 之前有一项工作是将mysql的数据库实现转移到oracle,遇到了自增主键实现的问题. 首先介绍一下MySQL和Oracle的背景知识 1)MySQL建表时必须有一个主键(PRIMARY KEY), 每条主键内容必须唯一(Unique), 所以经常使用一个”ID”字段作为主键,给它一个”auto_increment”属性,让”ID”字段每条记录都自增”1″. 比如下表: 1 CRE

2HQL及自增主键

1HQL Hibernate Query Language是一种面向对象的查询语言,HQL的操作对象时类,实例,属性:与EJB3 QL很接近. HQL的功能非常丰富,where子句后支持的运算符异常丰富,不仅包括SQL的运算符,还包括EJB-QL的运算符等. 除了Java类与属性的名称外,查询语句对大小些并不敏感. HQL 不支持union联合查询. select子句 select子句用于确定选择出的属性,当然select选择的属性必须是from后持久化类包含的属性.例如: select p.n

mysql的Innodb表为什么要用数字自增主键

InnoDB引擎表的特点 1.InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的; (2)不可能在非叶子结点命中; (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 2.如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引.如果没有显式定义主键,则InnoDB会选择第一个不包含有NU

mybatis自增主键返回

自增主键的返回: mysql自增主键,执行insert提交之前自动生成一个自增主键. 通过mysql函数获取到刚插入记录的自增主键: LAST_INSERT_ID() 是insert之后调用此函数. 修改insertUser定义: 非自增主键返回: 使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位. 执行思路: 先通过uuid()查询到主键,将主键输入 到sql语句中. 执行uuid()语句顺序相对于insert语句之前执行. 通过oracle的

关于mybatis用mysql时,插入返回自增主键的问题

公司决定新项目用mybatis,虽然这个以前学过但是一直没用过都忘得差不多了,而且项目比较紧,也没时间去系统点的学一学,只好很粗略的百度达到能用的程度就行了. 其中涉及到插入实体要求返回主键id的问题,以前用ssh配合oracle很容易实现,因为有sequence,而且mysql也基本没用过,所以只好去百度了. 这个内容还是比较好查的,如下: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapp