如果where子句存在,MySQL仅更新行

时间:2012-09-06 02:51:52

标签: mysql

我相信我在某处读到有一个mysql配置设置可以防止通过控制台更新行,除非存在WHERE子句。

我无法在文档中找到它,该选项是否存在?

3 个答案:

答案 0 :(得分:12)

这是MYSQL安全更新模式。

Check here.

还有 --safe-updates 选项。

答案 1 :(得分:8)

在运行查询之前只需SET SQL_SAFE_UPDATES=0;

有关安全模式,请参阅MySQL tips

  

对于初学者,一个有用的启动选项是--safe-updates(或--i-am-a-dummy,具有相同的效果)。对于可能已发出DELETE FROM tbl_name语句但忘记了WHERE子句的情况很有用。通常,这样的语句会删除表中的所有行。使用--safe-updates,您只能通过指定标识它们的键值来删除行。这有助于防止事故发生。

     

除非在WHERE子句中指定键约束或提供LIMIT子句(或两者),否则不允许执行UPDATE或DELETE语句。例如:

UPDATE tbl_name SET not_key_column=val WHERE key_column=val;

UPDATE tbl_name SET not_key_column=val LIMIT 1;

答案 2 :(得分:2)

来自MySQL文档:http://dev.mysql.com/doc/refman/5.5/en/mysql-tips.html

“4.5.1.6.2。使用--safe-updates选项

对于初学者,一个有用的启动选项是--safe-updates(或--i-am-a-dummy,具有相同的效果)。对于可能已发出DELETE FROM tbl_name语句但忘记了WHERE子句的情况很有用。通常,这样的语句会删除表中的所有行。使用--safe-updates,您只能通过指定标识它们的键值来删除行。这有助于防止事故。

[...]

除非在WHERE子句中指定键约束或提供LIMIT子句(或两者),否则不允许执行UPDATE或DELETE语句。“