婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql利用參數sql_safe_updates限制update/delete范圍詳解

mysql利用參數sql_safe_updates限制update/delete范圍詳解

熱門標簽:地圖標注圖標素材入駐 電話機器人免費嗎 好搜地圖標注 怎么辦理400電話呢 龍圖酒吧地圖標注 電銷機器人價格多少錢一臺 400電話申請什么好 怎么申請400電話申請 百度地圖標注地方備注

前言

大家應該都知道,我們在mysql運維中出現過不少因為update/delete條件錯誤導致數據被誤更新或者刪除的case,為避免類似問題的發生,可以用sql_safe_updates參數來對update/delete做限制。這個參數設置為on后,可防止因程序bug或者DBA手工誤操作導致的整個表被更新或者刪除的情況。下面話不多說了,來一起看看詳細的介紹吧。

設置這個參數時需要注意一下幾點:

       a、設置前需要確認程序中所有的update和delete都符合sql_safe_updates的限制規范,不然程序會報錯。

       b、5.0,5.1都是session級別的,5.6是globalsession級別;低版本的數據庫只能在程序創建session時設置帶上set sql_safe_updates=on;高版本的數據庫可以直接set global set sql_safe_updates=on,設置完成后讓程序重連后生效。

限制規范:

示例表結構:

CREATE TABLE `delay_monitor` (
 `id` int(11) NOT NULL,
 `Ftime` datetime DEFAULT NULL,
 `Fgtid` varchar(128) NOT NULL DEFAULT '',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin​

1、update

a、報錯條件:不帶where、帶where無索引、where條件為常量

     不帶where:update delay_monitor set Ftime=now();

      帶where無索引:update delay_monitor set Ftime=now() where Fgtid='test';

      where條件為常量:update delay_monitor set Ftime=now() where 1;

 b、執行條件:帶where帶索引、不帶where+帶limit、帶where無索引+limit、帶where有索引+limit、where條件為常量+limit

       帶where帶索引:update delay_monitor set Ftime=now() where id=2;

       不帶where+帶limit: update delay_monitor set Ftime=now()  limit 1;

       帶where無索引+limit:update delay_monitor set Ftime=now() where Fgtid='test' limit 1;

       帶where有索引+limit:update delay_monitor set Ftime=now() where id =2 limit1;

        where條件為常量+limit:update delay_monitor set Ftime=now() where 1 limit 1;

 2、delete

 相對于update,delelte的限制會更為嚴格;where條件為常量或者為空,將不予執行。

a、報錯條件:不帶where、帶where無索引、不帶where+帶limit、where條件為常量、where條件為常量+limit

      不帶where:delete delay_monitor set Ftime=now();

      帶where無索引:delete delay_monitor set Ftime=now() where Fgtid='test';

      不帶where+帶limit: delete delay_monitor set Ftime=now()  limit 1;

      where條件為常量:delete delay_monitor set Ftime=now() where 1;

      where條件為常量+limit:delete delay_monitor set Ftime=now() where 1 limit 1;

b、執行條件:帶where帶索引、帶where無索引+limit、帶where有索引+limt

      帶where帶索引:delete delay_monitor set Ftime=now() where id=2;

      帶where無索引+limit:delete delay_monitor set Ftime=now() where Fgtid='test' limit 1;

      帶where有索引+limit:delete delay_monitor set Ftime=now() where id =2 limit1;

總結如下表:key表示所有、const表示常量

操作  no where where key where nokey  limit where nokey+limit where key+limit      where const where const+limit
delete     NO YES NO NO YES YES NO     NO
update NO YES NO YES YES YES NO YES

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MySQL中參數sql_safe_updates在生產環境的使用詳解

標簽:撫順 固原 溫州 內江 廣西 汕尾 防疫工作 浙江

巨人網絡通訊聲明:本文標題《mysql利用參數sql_safe_updates限制update/delete范圍詳解》,本文關鍵詞  mysql,利用,參數,sql,safe,updates,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql利用參數sql_safe_updates限制update/delete范圍詳解》相關的同類信息!
  • 本頁收集關于mysql利用參數sql_safe_updates限制update/delete范圍詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 喀什市| 石景山区| 大邑县| 黑河市| 兰西县| 明光市| 新兴县| 烟台市| 桐庐县| 樟树市| 龙山县| 金湖县| 溆浦县| 塔河县| 通城县| 保亭| 扎鲁特旗| 凌源市| 德州市| 济阳县| 常山县| 灯塔市| 平原县| 宁明县| 胶南市| 双牌县| 墨竹工卡县| 信宜市| 微山县| 筠连县| 岢岚县| 山阴县| 会理县| 武冈市| 宣城市| 巴中市| 徐水县| 临邑县| 枝江市| 石景山区| 威海市|