摘要:線上出現(xiàn)了一個(gè)問題同步某一功能的數(shù)據(jù)的時(shí)候,同一主鍵的數(shù)據(jù)會發(fā)多次。拋出主鍵沖突的異常。綜合上述的描述,目前要解決的事情有并發(fā)。數(shù)據(jù)存儲順序前提有標(biāo)識能區(qū)分最新數(shù)據(jù)。基于上述描述準(zhǔn)備用語句,用數(shù)據(jù)庫層面的事物來保證數(shù)據(jù)的一致性。
線上出現(xiàn)了一個(gè)問題:mq同步某一功能的數(shù)據(jù)的時(shí)候,同一主鍵的數(shù)據(jù)會發(fā)多次。業(yè)務(wù)邏輯是,某一條數(shù)據(jù)過來后,我會先去數(shù)據(jù)庫查是否存在了此uuid的數(shù)據(jù),如果有的話更新,如果沒有的話插入。由于同一主鍵的數(shù)據(jù)會發(fā)不止一次的mq,并且間隔時(shí)間非常小,所以就導(dǎo)致了,兩條數(shù)據(jù)都進(jìn)入了插入的邏輯里面。拋出主鍵沖突的異常。另外就算是進(jìn)入到了不同的更新和插入的邏輯里面,有時(shí)會出現(xiàn)第二條數(shù)據(jù)先進(jìn)來,然后第一條數(shù)據(jù)再進(jìn)來,此時(shí)數(shù)據(jù)庫里面更新的就是第一次的數(shù)據(jù),就會產(chǎn)生了數(shù)據(jù)錯(cuò)誤。 綜合上述的描述,目前要解決的事情有:1、mq并發(fā)。2、數(shù)據(jù)存儲順序(前提:有標(biāo)識能區(qū)分mq最新數(shù)據(jù))。
基于上述描述準(zhǔn)備用merge into 語句,用數(shù)據(jù)庫層面的事物來保證數(shù)據(jù)的一致性。那么現(xiàn)在就來贅述一下merge into的一些用法
merge into 是用來進(jìn)行合并表的,但因?yàn)槠涮匦圆煌瑘龊嫌梅ㄓ幸韵聨追N 1、合并表 2、外部數(shù)據(jù)插入更新 3、用join表更新
1和3我這里就不贅述了,我使用到的是2這一類,最后經(jīng)過改造我所用到的sql如下:
1 MERGE INTO mytable t1
2 USING dual ON ( t1.tuuid =?)
3 WHEN MATCHED THEN
4 UPDATE SET modify_date =?,
5 flg =?
6 WHERE flg != "N"
7 WHEN NOT MATCHED THEN
8 INSERT (
9 uuid,
10 flg,
11 modify_date ) VALUES (?,?,?);
由于是外部更新,屬于類型2只有一張表,所以在第2行引入偽表做關(guān)聯(lián)條件。同時(shí)sql第6行判斷的是mq的順序,如果根據(jù)uuid發(fā)現(xiàn)表里面存在數(shù)據(jù)并且flg值為‘N’就表示mq過來后插入的是第二條數(shù)據(jù),那么就不需要再做更新。(關(guān)鍵的地方是第2行【偽表】和第6行【merge語句可以在update語句里面寫where條件】的改動)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72657.html
摘要:運(yùn)算符的優(yōu)先級,是明顯高于,因此先執(zhí)行再執(zhí)行。這里會非常有趣的將轉(zhuǎn)換成一個(gè)數(shù)字而且默認(rèn)去掉了前面的也就是很顯然上面的問題已經(jīng)說過了數(shù)字和字符串類型不一致。 showImg(https://segmentfault.com/img/bVvhhO); 本文翻譯自:https://www.toptal.com/php/interview-questions ,文章所羅列的問題雖然看似簡單,但...
摘要:是實(shí)現(xiàn)網(wǎng)格視圖的小部件,一般用于報(bào)表視圖的展示。就是連續(xù)的列,主要用于網(wǎng)格的行號,屬于自增式的列。指定處理的類,必須。 Yii2 GridView是實(shí)現(xiàn)yii網(wǎng)格視圖的小部件,一般用于報(bào)表視圖的展示。今天,結(jié)合DataProvider(ArrayDataProvider以及SqlDataProvider)說一下GridView中的幾個(gè)Columns(SerialColumn,DataC...
閱讀 2423·2021-11-16 11:44
閱讀 853·2021-09-10 11:16
閱讀 2228·2019-08-30 15:54
閱讀 1060·2019-08-30 15:53
閱讀 1905·2019-08-30 13:00
閱讀 622·2019-08-29 17:07
閱讀 3514·2019-08-29 16:39
閱讀 3138·2019-08-29 13:30