麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 13:14:42
字體:
來源:轉載
供稿:網友

前言

大家應該都知道,我們在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是global&session級別;低版本的數據庫只能在程序創建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

 

總結

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

 

注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宅男噜噜噜66国产在线观看 | 国产精品久久久久久久久久尿 | 午夜看毛片| 宅男噜噜噜66国产在线观看 | 欧美日韩在线中文字幕 | 国产精品久久久久av | 亚洲精品欧美在线 | 久国久产久精永久网页 | 国产精品午夜未成人免费观看 | 欧美精品一级 | 午夜影视一区二区 | 亚洲激情91 | a免费视频 | 国产成人av一区 | 欧美成年性h版影视中文字幕 | 成人污在线| 操操操操网 | 国产黄色一区二区 | 亚洲视屏在线 | 操操操日日日干干干 | 泰剧19禁啪啪无遮挡大尺度 | 欧美精品久久天天躁 | 欧美aⅴ视频| 日韩视频―中文字幕 | 国产a级片电影 | 久久久久国产一区二区三区不卡 | 中文字幕极速在线观看 | 中文字幕一二三区芒果 | 色综合精品| 婷婷中文字幕一区二区三区 | 欧美精品第1页 | 国产中出在线观看 | 午夜丰满少妇高清毛片1000部 | 国产91中文字幕 | 欧美精品成人一区二区在线观看 | 欧美精品一区二区三区在线 | 激情久久免费视频 | 国产女厕一区二区三区在线视 | 精品久久久久久久 | 国产宾馆3p国语对白 | 福利在线国产 |