问题:oracle id自增 insert语句如何写?

您所在的位置:网站首页 oracle变量自增 问题:oracle id自增 insert语句如何写?

问题:oracle id自增 insert语句如何写?

2024-07-14 20:42| 来源: 网络整理| 查看: 265

情况如下,oracle数据库,假设现在从user表查询数据有三条

 

IDuserName0小明1小红2小张

 

 

 

 

 

此时想在PLSQL写insert语句插入一条新数据,ID为主键,肯定不能这么写:

insert into user(ID,userName) values (3,“小王”);   

如果不清楚目前ID最大值是多少,那就会出现冲突。

解决方法:

1.如果这张表建了序列sequence,并且这个序列想让ID自增:

查询序列方法: select * from user_sequences where sequence_name like '%seq_user%'

那么我的insert语句应该这么写: insert into user(ID,userName) values (seq_user.nextval,“小王”);

2.如果没有建立序列,那么需要对这个user表建立一个序列:

create sequence seq_user increment by 1 start with 1 minvalue 1 maxvalue 9999999 order cache 20 cycle;

这是序列的含义:

和mysql中使用auto_increment不同,oracle中使用序列来实现主键自增,使用序列前必须要先创建一个序列 create sequence seq_users 序列名称 increment by 1 每次增长多少 start with 1 从几开始 minvalue 1 最小值 maxvalue 999999999 最大值 cycle/no cycle 序列到达最大值之后怎么办,一般去cycle cache 20 需要不需要使用缓存,就是一次生成多少个序列的值,如果生成了多个序列值,如果缓存中有数据, 就 不需要查询缓存了 order/noorder 获取序列的时候是否按顺序给值。如果多用户一起获取序列的值,使用order可以保证序列值的顺 序按访问序列的事件排序。

创建好了以后,再插入数据:

insert into user(ID,userName) values (seq_user.nextval,“小王”);

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3