久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

一條sql語句所引發的問題怎么解決

170次閱讀
沒有評論

共計 1704 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹“一條 sql 語句所引發的問題怎么解決”,在日常操作中,相信很多人在一條 sql 語句所引發的問題怎么解決問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”一條 sql 語句所引發的問題怎么解決”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

場景描述

現場報過來,本該打到新服務的流量,又走到了老服務,老服務的功能不健全,很可能會讓現場的用戶不能支付。需要說明一點的是,任何一個從老服務改造到新服務的時候,都不是完全把流量切過去,都需要經過一點時間去驗證。

比如我們按照地理位置去切,將北京的部分車場(是的,我們是做停車服務的),切到新服務,其他城市的車場在老服務

我們采用最簡單的辦法,就是靠一個字段 type 去控制(0 和 1)

看似簡單,但是事怪就怪在這個字段上,這個控制字段是屬于后來加到數據庫字段的,而且沒有對外去配置,都是通過運維手動去數據庫配置的,且數據庫字段默認值設置為 1。

可總有幾個車場時不時的從 0 就變成了 1。。眾所周知, 一個新的字段不在 mybatis xml 和 pojo 出現,那么就不會有操作改掉

翻遍所有的服務,關乎這個表的都是 update 操作,update 操作因為沒有這個字段時打死也不會改這個 type 的

冷靜下來想想,數據庫默認字段為 1,然后 0 都會變成 1。沒有 1 變成 0 的,可以肯定的是,先刪除,又新增了,否則沒有別的解釋

經過一番查驗,找到這樣一堆代碼(偽代碼)

replace INTO `A` (
     park_id,
     xxxx,
     xxxx
   )
   SELECT
      park_id,
      xxxx,
      xxxx
   FROM
   B
   where b.park_id = #{parkId}復制代碼

replace INTO

是的,就是 replace INTO 搞得鬼,大家都知道,replace INTO 和 insert into 的區別

1、replace into 首先嘗試插入數據到表中,如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。

2、如果表中無此數據,則插入新數據。

這就正好驗證了上面的猜想,只有刪除再添加,才會讓 type 跟隨數據庫的默認值走

講到這里不妨我們多了解一點這個,有人可能會問,replace 是不是取代了 insert 和 delete,畢竟是干了兩件事

MySql 手冊關于 replace into 的算法:Mysql 手冊

MySQL uses the following algorithm for REPLACE (and LOAD DATA ... REPLACE):Try to insert the new row into the tableWhile the insertion fails because a duplicate-key error occurs for a primary key or unique index:Delete from the table the conflicting row that has the duplicate key valueTry again to insert the new row into the tableMySQL 對 REPLACE(和 LOAD DATA…REPLACE)使用以下算法:

嘗試將新行插入表中

當由于主鍵或唯一索引出現重復鍵錯誤而導致插入失敗時:

從表中刪除具有重復鍵值的沖突行

再次嘗試將新行插入表中復制代碼

先插入, 出錯了再執行 delete 加 insert. 如果自己用程序來做, 個人認為效率會低很多,另外這樣寫真的很搞人

這里推薦使用 INSERT…ON DUPLICATE KEY UPDATE, 感覺很靠譜. replace 的副作用:

replace 每次要重新分配自增 id;

replace 中執行 delete 時, 在有外鍵的情況下會很麻煩;

如果 delete 時定義的有觸發器, 則會被執行;

副作用也會被傳播到 replica slave

到此,關于“一條 sql 語句所引發的問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計1704字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 报价| 乌海市| 西林县| 共和县| 开封县| 鹰潭市| 洱源县| 望谟县| 墨竹工卡县| 涟水县| 赣榆县| 饶平县| 江北区| 阳山县| 葵青区| 景洪市| 错那县| 枣强县| 明光市| 东阿县| 昌乐县| 宁陕县| 芮城县| 永顺县| 许昌市| 舟曲县| SHOW| 丰原市| 乡城县| 鹤庆县| 讷河市| 海安县| 东乡县| 广丰县| 乌苏市| 五大连池市| 织金县| 南江县| 望谟县| 会同县| 侯马市|