当前位置:   article > 正文

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

id自增长的insert语句

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

 

IDuserName
0小明
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,“小王”);

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/241262
推荐阅读
相关标签
  

闽ICP备14008679号