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;
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Oracle数据库中创建自增主键的实例教程
相关文章
- Oracle 中实现取余取整的方法(oracle取余取整)
- Oracle数据库中按拼音排序的实现(oracle按拼音排序)
- 调优提升性能:Oracle 数据库代码调优实践(oracle数据库代码)
- Oracle数据库中如何关闭用户(oracle关闭用户)
- Oracle数据库触发器类型深度剖析(oracle触发器类型)
- 解析Oracle数据库的触发器类型(oracle触发器类型)
- 解析Oracle数据库中触发器类型(oracle触发器类型)
- 数据库实时监控 Oracle 数据库加速运行(监控oracle)
- 数据库的运维云上Oracle数据库运维实战(云主机oracle)
- Oracle数据库的连接如何正确关闭?(关闭的连接oracle)
- 简化IT环境的Oracle容器数据库管理(oracle容器数据库)
- 使用Oracle查看数据表结构的方法(oracle查表结构)
- PHP连接Oracle:轻松实现数据库交互(php链接oracle)
- Oracle数据库中的:= 的作用(oracle中 :=)
- 数据如何快速取出Oracle数据库中的最后一条数据(oracle取最后一条)
- 数据库Oracle全闪存储解放数据处理速度(oracle全闪存储)
- Oracle全面恢复复苏希望的灯塔(oracle全部恢复)
- 解决Oracle数据库错误12516的方法(oracle-12516)
- 使用JSP实现Oracle数据库分页(jsp分页oracle)
- Oracle数据库中符号的运用(oracle中符号的用法)
- Oracle数据库交流群初学者学习指南(oracle交流教程)
- 向Oracle致敬史诗般的主题曲(oracle主题曲)
- Oracle数据库中的批量更新实践(oracle中批量更新)
- Oracle中大展身手子串函数的应用(oracle中子串函数)
- ms探索Oracle中EDMS的管理精髓(oracle中ed)
- Oracle与用友不同又相同的数据库管理系统(oracle与用友的差别)
- Oracle MLOG表对数据库变更操作的完整记录(oracle mlog表)
- Oracle IP错误求救解决万难(oracle ip错误)
- Oracle数据库从28007起,快速迈向成功(oracle 28007)
- Oracle 10g 改变数据库管理格局(oracle10458)
- 用Oracle一步步把1变成001(oracle 1变001)