oracle 主键自增函数_Oracle数据库中创建自增主键的实例教程
在设计数据库表的时候发现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数据库中创建自增主键的实例教程相关推荐
- server的自增主键返回函数 sql_mybatis+sqlserver中返回非自增主键
首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around { private String xccd; //对应主键 private ...
- oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别
order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...
- oracle全局索引 前缀索引_Oracle数据库中的索引详解
一. ROWID的概念 存储 了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储 方式 SELECT ROWID, last_nam ...
- 通过源码分析Mybatis是如何返回数据库生成的自增主键值?
在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...
- datatable如何生成级联数据_通过源码分析Mybatis是如何返回数据库生成的自增主键值?...
在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...
- mysql数据库中的自增字段会不会溢出,我用的是int,万一超过这个int的表示范围会怎样
mysql数据库中的自增字段会不会溢出,我用的是int,万一超过这个int的表示范围会怎样 描述不清违规检举侵权投诉| | 2015-04-23 11:37 princelions | 浏览 596 ...
- mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程
网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192 ...
- 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...
在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户. 更多相关问题 Working with the foreigners ____ me ___ ...
- db2 控制台执行创建函数语句_DB2数据库中创建定义函数
本文将为您详细介绍DB2数据库中创建用户自定义行数,用以扩展扩展内置的 DB2 函数的方法,供您参考,希望对您有所帮助. 可以创建用户定义函数来扩展内置的 DB2 函数.例如,创建计算复杂的算术表达式 ...
最新文章
- strtok和strtok_r
- vue 仿ele 开发流程
- 分享我工作10年收藏的程序员技术网站
- linux软件工程师笔试题,C/C++软件工程师笔试题
- 40 个 SpringBoot 常用注解:让生产力爆表!
- zabbix监控特殊端口(8080,80,8009等)
- es6 Proxy 的 this 问题
- HDU-神、上帝以及老天爷
- linux buffer 刷到磁盘,Linux下的磁盘缓存 linux page buffer cache深入理解
- c语言单片机常用函数,C51单片机C语言函数编辑 -单片机-电子工程世界网
- DISCUZ编辑器工具栏图标不显示
- 线性代数 n维向量思维导图总结(看这一张就完事了)
- 7、python数据框重复值的查找和删除
- Android 4.0 人脸,Android 4.0.3!原道N90人脸识别试用
- 小程序向数组中添加数据
- sklearn.datasets.base中Bunch类
- 微信小程序的text 的换行
- 用vmware安装redhat 9出现“光盘无法被挂载”错误的解决办法
- aho-corasick php,更快的Aho-Corasick PHP实现
- win10+cpu+caffe搭建