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