oracle主键自增,ORA-00001: unique constraint

以前公司一直用的是mysql,换公司以后改用oracle了,虽然大同小异,但是也算刚接触oracle
由于在oracle中主键自增比mysql麻烦一点,需要创建触发器才可以,接下来就是让oracle主键自增的过程
1;/第一步:创建表格/
create table XTY_DOMAIN_CDN_IP_201909(
id int primary key, --主键,自增长
url varchar(255),
cname varchar(255),
oper varchar(255),
cdn varchar(255),
ip varchar(255),
nameq varchar(255),
domaain varchar(255)
);
2;/第二步:建立自定义的序列/
CREATE SEQUENCE user_sequence
increment by 1 – 每次加几个
start with 1 – 从1开始计数
nomaxvalue – 不设置最大值
nocycle – 一直累加,不循环
nocache
3;/第三步:建立触发器/
create trigger mem_trig before
insert on XTY_DOMAIN_CDN_IP_201909 for each row when (new.id is null)
begin
select user_sequence.nextval into:new.id from dual;
end;
4;补充,其中XTY_DOMAIN_CDN_IP_201909是表名
5;删除序列的语法
drop sequence 序列命;
6;查看所有的序列号在什么位置
select * from user_sequences
7:oracle插入数据有时候会报错“ ORA-00001: unique constraint”,唯一约束错误。可能原因之一就是序列设置了最大值
解决办法先执行第六步查看序列号在什么位置,执行第五步删除原有的序列,执行第二步重新创建序列
8:补充触发器
8.1触发器名:t_fixbb_overview
8.2表名:T_FIX_BROADBAND_OVERVIEW
8.3序列名:SEQ_T_FIX_BROADBAND_OVERVIEW
8.4表里面的时间字段,入库时触发器自动添加时间:db_time

create or replace TRIGGER t_fixbb_overview
BEFORE INSERT ON T_FIX_BROADBAND_OVERVIEW
FOR EACH ROW
DECLARE
BEGIN
IF :new.id is null
THEN
select SEQ_T_FIX_BROADBAND_OVERVIEW.nextval into :new.id from dual;
END IF;
select sysdate into :new.db_time from dual;
END;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值