序列問題
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...