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

deb*_*deb 12 mysql

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

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

xda*_*azz 12

这是MYSQL安全更新模式.

点击这里

还有--safe-updates选项.

  • 它应该被称为`--put-a-cork-on-my-fork`,所以你不要用它来捅自己. (2认同)

Ker*_*mit 8

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

请参阅有关安全模式的MySQL提示.

对于初学者,一个有用的启动选项是--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;
Run Code Online (Sandbox Code Playgroud)