问题:oracle id自增 insert语句如何写? |
您所在的位置:网站首页 › oracle变量自增 › 问题:oracle id自增 insert语句如何写? |
情况如下,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 |