Oracle实现主键自增
Oracle数据库上建表时不能在字段后边写comment,只能在建完表后再添加注释。
第1步:创建一张带有主键的表
create table 用户名.表名
(
id NUMBER primary key, --主键
month_id VARCHAR2(20), --月份
kpi_value NUMBER,
......
)
partition by list (month_id)
(
partition PART202101 values ('202101')
);
(注意:对于Oracle数据库,建分区表时至少要给一个分区赋值)
第2步:创建序列
drop sequence 序列名;
create sequence 序列名
start with 1
increment by 1;
第3步:创建触发器(同时关联表和序列)
create or replace trigger 触发器名
before insert on 用户名.表名 for each row
begin
select 序列名.nextval into:new.id from dual;
end;
注意:
如果表中含有自增主键,那么对子分区进行truncate截断的时候,后边要加上update indexes。
可复习前文:分区的新建与删除
实践演练:
--1.创建表
create table DM.TABLE_NAME_M
(
id NUMBER primary key, --主键
month_id VARCHAR2(20), --月份
kpi_value NUMBER
)
partition by list (month_id)
(
partition PART202101 values ('202101')
);
--2.创建序列
drop sequence SEQ_TABLE_NAME_M;
create sequence SEQ_TABLE_NAME_M
start with 1
increment by 1;
--3.创建触发器
create or replace trigger TRI_TABLE_NAME_M
before insert on DM.TABLE_NAME_M for each row
begin
select SEQ_TABLE_NAME_M.nextval into:new.id from dual;
end;
--4.插入数据
insert into ......
注意:
如果表中含有自增主键,那么对子分区进行truncate截断的时候,后边要加上update indexes。
可复习前文:分区的新建与删除