你能锁定更新会改变数据库中的太多行吗?

时间:2011-03-22 10:49:21

标签: mysql

有没有办法在mysql中实现一个规则,阻止更新影响超过10行?

例如,假设我有tbl1有50,000行,我做

update tbl1 set tb1.name = 'bob'

然后快速继续“OH NO!我忘了那里!?!?”。

我问的原因是因为初级开发人员犯了这个错误,现在是修理时间:(。

3 个答案:

答案 0 :(得分:2)

您可以在没有此查询的where子句的情况下阻止更新(和删除)查询

set sql_safe_updates=1;

看一下这个链接

http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_safe-updates

i-am-a-dummy是您同事的正确开关。 :)

答案 1 :(得分:0)

使用LIMIT

实施例

update tbl1 set tb1.name = 'bob' LIMIT 0,10

这只会更新前10行;

答案 2 :(得分:0)

首先要考虑的是使用事务检查受影响的行,如果受影响的行太多或大于您设置的某个变量/限制,则使用ROLLBACK。据我所知,您无法获得将直接更新的行数。另一个选项是使用LIMIT,如果它是您正在更新的单个表。第三种解决方案是使用测试数据库,并让初级开发人员忘记“WHERE”:)