摘要:線上出現(xiàn)了一個問題同步某一功能的數(shù)據(jù)的時候,同一主鍵的數(shù)據(jù)會發(fā)多次。拋出主鍵沖突的異常。綜合上述的描述,目前要解決的事情有并發(fā)。數(shù)據(jù)存儲順序前提有標識能區(qū)分最新數(shù)據(jù)。基于上述描述準備用語句,用數(shù)據(jù)庫層面的事物來保證數(shù)據(jù)的一致性。
線上出現(xiàn)了一個問題:mq同步某一功能的數(shù)據(jù)的時候,同一主鍵的數(shù)據(jù)會發(fā)多次。業(yè)務邏輯是,某一條數(shù)據(jù)過來后,我會先去數(shù)據(jù)庫查是否存在了此uuid的數(shù)據(jù),如果有的話更新,如果沒有的話插入。由于同一主鍵的數(shù)據(jù)會發(fā)不止一次的mq,并且間隔時間非常小,所以就導致了,兩條數(shù)據(jù)都進入了插入的邏輯里面。拋出主鍵沖突的異常。另外就算是進入到了不同的更新和插入的邏輯里面,有時會出現(xiàn)第二條數(shù)據(jù)先進來,然后第一條數(shù)據(jù)再進來,此時數(shù)據(jù)庫里面更新的就是第一次的數(shù)據(jù),就會產(chǎn)生了數(shù)據(jù)錯誤。 綜合上述的描述,目前要解決的事情有:1、mq并發(fā)。2、數(shù)據(jù)存儲順序(前提:有標識能區(qū)分mq最新數(shù)據(jù))。
基于上述描述準備用merge into 語句,用數(shù)據(jù)庫層面的事物來保證數(shù)據(jù)的一致性。那么現(xiàn)在就來贅述一下merge into的一些用法
merge into 是用來進行合并表的,但因為其特性不同場合用法有以下幾種 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)條件。同時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://systransis.cn/yun/72657.html
摘要:運算符的優(yōu)先級,是明顯高于,因此先執(zhí)行再執(zhí)行。這里會非常有趣的將轉(zhuǎn)換成一個數(shù)字而且默認去掉了前面的也就是很顯然上面的問題已經(jīng)說過了數(shù)字和字符串類型不一致。 showImg(https://segmentfault.com/img/bVvhhO); 本文翻譯自:https://www.toptal.com/php/interview-questions ,文章所羅列的問題雖然看似簡單,但...
摘要:是實現(xiàn)網(wǎng)格視圖的小部件,一般用于報表視圖的展示。就是連續(xù)的列,主要用于網(wǎng)格的行號,屬于自增式的列。指定處理的類,必須。 Yii2 GridView是實現(xiàn)yii網(wǎng)格視圖的小部件,一般用于報表視圖的展示。今天,結(jié)合DataProvider(ArrayDataProvider以及SqlDataProvider)說一下GridView中的幾個Columns(SerialColumn,DataC...
閱讀 2432·2021-11-16 11:44
閱讀 858·2021-09-10 11:16
閱讀 2234·2019-08-30 15:54
閱讀 1065·2019-08-30 15:53
閱讀 1913·2019-08-30 13:00
閱讀 625·2019-08-29 17:07
閱讀 3519·2019-08-29 16:39
閱讀 3141·2019-08-29 13:30