序列問題導致主鍵衝突

2021-08-10 11:09:34 字數 863 閱讀 7101

序列問題

create sequence bosdata.get_pk_seq

minvalue 1

maxvalue 999999999999999999999999999

start with 1001630254

increment by 1

cache 2000

cycle;

select 'ear' || to_char(sysdate,'yyyymmdd') || lpad(get_pk_seq.nextval,9,0), lpad(get_pk_seq.nextval,9,0),get_pk_seq.nextval from dual;

ear20171107100167825    

100167825   

1001678254

當序列get_pk_seq.nextval取值超過9位,是1001678254時候,lpad(get_pk_seq.nextval,9,0)=100167825,取值是從左往右取值,會忽略個位數,然後主鍵中 to_char(sysdate,'yyyymmdd')=20171107只會是當天的值不變

,後面序列取值忽略個位數後也會不變,導致了主鍵衝突 unique constraint  violated,建議序列不要隨意建,需要考慮位數,是否迴圈

建議select sysdate,'ear' || to_char(sysdate,'yymmddhh24') || lpad(get_pk_seq.nextval,9,0) from dual;

有兩個地方 改進 

1、在 to_char(sysdate,'yymmddhh24'),可以去掉年的兩位,精確到小時,

2、序列方面,可以設定序列的位數最大是9位,迴圈

Linux GPIO口配置衝突導致問題

在裝置進行休眠時,休眠成功後被喚醒,檢視休眠gpio口被拉高,排除微控制器拉高的可能,列印如下 suspend set mcu wakeup pin2 to high level 休眠下去 detect usb vbus is 0 off 關vbus msm hsusb msm hsusb ci13...

捕捉主鍵衝突異常

第一種方法 try catch exception e else第二種方法 使用insert ignore into tablename 字段 values 值 mysql插入會直接忽略重複的值,但是需要確保sql語句沒有問題,否則依舊會報錯 一定要有主鍵或唯一索引,否則和insert into沒有...

Mysql衝突更新 mysql 主鍵衝突更新

mysql的特殊功能,在主鍵衝突的情況下,可以根據主鍵進行更新資料 建表語句 全量指令碼 建立表 tb day hold 持倉表 的當前表 select create table tb day hold 持倉表.drop table if exists tb day hold create tabl...