问题:oracle 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,“小王”);

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值