zoukankan      html  css  js  c++  java
  • MySQL sql_safe_updates 分析

    我在练习MySQL操作语句时,使用一条完全没有错误的语句:

    update students set name='drake' where name='chuan';

    却报了如下错误:

    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
    简单翻译一下:
    你正在使用 安全更新模式(safe upate mode)并且你在尝试 update 一个表时 没有用带有键的列 作为where条件,在首选项中切换选项。

    初学者在修改一个值时可能会用以下语句:

    update t set col='new_value' 

    而这正是很多人常犯的错误。因为他没有限定条件,会将表中所有的记录都修改一遍。

    为了防止这种错误出现,我们可以开启安全更新模式(safe update mode)

    set [global] SQL_SAFE_UPDATES = 1;

    update操作中:当where条件中列(column没有索引可用且无limit限制时会拒绝更新。where条件为常量且无limit限制时会拒绝更新。

    delete操作中: 当①where条件为常量,where条件为空,③或where条件中 列(column没有索引可用且无limit限制时拒绝删除。

    需要注意的是:

    update操作中,where可以为常量  ,where条件中列(column)可以没有索引。但是需要有limit限制。

    然而delete要严格一些:where不能为常量,且where条件中列(column)不能没有索引!

  • 相关阅读:
    js数组的基本用法及数组根据下标(数值或字符)移除元素
    Oracle备份一张表
    linux中常见的文件操作命令
    java图片二进制相互转换
    getParameterMap的使用
    前端常用
    Oracle 常用
    JAVA中int、String的类型转换
    MySQL 5.7 新特性大全和未来展望
    你有自己的Web缓存知识体系吗?
  • 原文地址:https://www.cnblogs.com/drake-guo/p/6101531.html
Copyright © 2011-2022 走看看