在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现。

创建表Student

Create Table Student(

id number(12) primary key, --通过序列和触发器实现id的自增

name varchar2(20) ,

age number(3) ,

sex number(1)

)

创建序列Sequence

Create Sequence SEQ_STUDENT

minvalue 1

maxvalue 99999999999999999999

start with 1 --从1开始

increment by 1 --增量为1

cache 0

order;

创建触发器Trigger

Create or Replace Trigger STUDENT_AUTOINCREMENT

Before Insert on Student

For Each Row

When (NEW.ID IS NULL)

Begin

Select SEQ_STUDENT.NEXTVAL INTO :NEW.ID FROM DUAL;

End;

注意点:

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;

oracle 主键自增函数_Oracle数据库中创建自增主键的实例教程相关推荐

  1. server的自增主键返回函数 sql_mybatis+sqlserver中返回非自增主键

    首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around { private String xccd;  //对应主键 private ...

  2. oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别

    order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...

  3. oracle全局索引 前缀索引_Oracle数据库中的索引详解

    一. ROWID的概念 存储 了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储 方式 SELECT ROWID, last_nam ...

  4. 通过源码分析Mybatis是如何返回数据库生成的自增主键值?

    在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...

  5. datatable如何生成级联数据_通过源码分析Mybatis是如何返回数据库生成的自增主键值?...

    在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...

  6. mysql数据库中的自增字段会不会溢出,我用的是int,万一超过这个int的表示范围会怎样

    mysql数据库中的自增字段会不会溢出,我用的是int,万一超过这个int的表示范围会怎样 描述不清违规检举侵权投诉| | 2015-04-23 11:37 princelions | 浏览 596 ...

  7. mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程

    网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192 ...

  8. 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...

    在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户. 更多相关问题 Working with the foreigners ____ me ___ ...

  9. db2 控制台执行创建函数语句_DB2数据库中创建定义函数

    本文将为您详细介绍DB2数据库中创建用户自定义行数,用以扩展扩展内置的 DB2 函数的方法,供您参考,希望对您有所帮助. 可以创建用户定义函数来扩展内置的 DB2 函数.例如,创建计算复杂的算术表达式 ...

最新文章

  1. strtok和strtok_r
  2. vue 仿ele 开发流程
  3. 分享我工作10年收藏的程序员技术网站
  4. linux软件工程师笔试题,C/C++软件工程师笔试题
  5. 40 个 SpringBoot 常用注解:让生产力爆表!
  6. zabbix监控特殊端口(8080,80,8009等)
  7. es6 Proxy 的 this 问题
  8. HDU-神、上帝以及老天爷
  9. linux buffer 刷到磁盘,Linux下的磁盘缓存 linux page buffer cache深入理解
  10. c语言单片机常用函数,C51单片机C语言函数编辑 -单片机-电子工程世界网
  11. DISCUZ编辑器工具栏图标不显示
  12. 线性代数 n维向量思维导图总结(看这一张就完事了)
  13. 7、python数据框重复值的查找和删除
  14. Android 4.0 人脸,Android 4.0.3!原道N90人脸识别试用
  15. 小程序向数组中添加数据
  16. sklearn.datasets.base中Bunch类
  17. 微信小程序的text 的换行
  18. 用vmware安装redhat 9出现“光盘无法被挂载”错误的解决办法
  19. aho-corasick php,更快的Aho-Corasick PHP实现
  20. win10+cpu+caffe搭建

热门文章

  1. 并查集 | 1107
  2. 程序设计中的数学思维函数总结(代码以C#为例)
  3. 排序sort,统计wc
  4. 剑指offer系列48---左旋转字符串
  5. WPF中ListBox的样式设置
  6. 传智播客Lucene视频教程
  7. 博客园jquery专题
  8. PHP try catch用法
  9. SQL中的全文检索(转帖)
  10. Programmer,Developer,Engineer——软件从业人员的职业规划