Oracle怎么在建表时让主键自动递增
Oracle怎么在建表时让主键自动递增呢?
首先我们创建一个测试用的表(这里就不讲建表相关的知识了)。
create table by_admin( admin_id int primary key , admin_username varchar(100) not null, admin_password varchar(100) not null, admin_name varchar(100) not null, admin_sex varchar(100) check(admin_sex in (m,f)), admin_tel varchar(100) not null, admin_email varchar(100) not null, admin_idcard varchar(100) not null );
Oracle与MySql主键递增的加法不同,Oracle需要在建好表以后给该表创建一个序列。
--创建序列格式 create sequence 表名_主键名_seq start with 1 increment by 1; --创建序列 create sequence by_admin_admin_id_seq start with 1 increment by 1;
建好序列以后可以查看该序列,可以更改(需要管理员权限)。
--查看并更改序列 select a.*,rowid from user_sequences a;
有了序列之后还必须要有一个触发器来触发,比如说:当主键为空时,系统自动取我们设置的序列值填进去。
--创建触发器 create or replace trigger by_admin_trigger before insert on by_admin for each row when(new.admin_id is null) begin select by_admin_admin_id_seq.nextval into:new.admin_id from dual; end;
建好触发器以后可以查看该触发器,可以更改(需要管理员权限)。
--查看触发器 select a.*,rowid from user_triggers;
最后我们插入数据来检测我们的序列。
--插入测试数据 insert into by_admin values(,a,b,c,m,e,f,g); --查看测试结果 select a.*,rowid from by_admin a;
总结就是:建好表——>创建序列——>创建触发器——>大功告成。