Oracle数据库设置主键自增
一,sql语句创建
oracle数据库与mysql数据库的主键自增设置是不同的。
mysql主键自增很简单,在创建主键的时候在主键字段后增加auto_increment就可以实现自增。
但是oracle相比下多了两步操作:
①创建序列:可以理解成创建一个规则—>
创建一个序列,名称为demo_seq,
值是从1开始,
每次递增1,
最大值(MAXVALUE是oracle默认的最大值),
当值递增到最大值时是否循环(NOCYCLE是不循环),
递增还是是否需要缓存(NOCACHE是不设置缓存)。缓存适合于批量插入的数据,就是一次性创建好指定数量的主键值,可以提高一定的插入性能,默认值20。
CREATE SEQUENCE demo_seq
START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999999
NOCYCLE
CACHE 20;
②创建触发器:触发器是针对于表创建的,用于在什么时候触发调用已创建好的序列。
创建一个触发器,名称为demo_tri,
对于demo_table表每一行记录的插入,
当表的主键demoId为空时(new是关键字,不用改动),
开始
查询序列demo_seq的下一个值,并赋值给当前表的主键demoId
结束
CREATE TRIGGER demo_tri
before
insert on demo_table for each row when (new.demoId
is null)
begin
select demo_seq.nextval into:new.demoId from dual;
end;
二,使用navicat如何创建:
同样分为两个步骤:
①创建序列
1.选择如图位置的序列,点击。
2.输入相应的值,最后点击保存,输入序列名称,称,此处是:demo_seq
②创建触发器
1.创建触发器,同序列位置的那个列表点击触发器
2.然后点击右侧定义,sql内容如下。大意是查询出当前表格对应的序列的下一个值demo_sql.nextval,作为自增主键字段的值new.demoId。
select demo_seq.nextval into:new.demoId from dual
3.最后点击保存,输入触发器名称。
至此主键自增的sql语句方式创建完毕,序列和触发器需要配合使用。另外再分享几个常用sql:
1.序列
#查看某个用户下所有序列
select * from dba_sequences where sequence_owner='LDYY';
#查看某个序列信息
select * from user_sequences where sequence_name ='demo_seq';
#删除序列
DROP SEQUENCE BDM_SEQ
2.触发器
//查看某个表的触发器
select trigger_name from all_triggers where table_name='demo_tri'
//启用和禁用
ALTER TRIGGER trigger_name DISABLE;
ALTER TRIGGER trigger_name ENABLE;
//删除触发器
DROP TRIGGER demo_tri