如何避免使用mysql更新所有行

时间:2017-04-14 06:33:46

标签: mysql database

有没有办法可以拒绝或避免更新Mysql表的所有行?

背景:

我有一个表'Orders'有'OrderID'(Type VARCHAR)和'VendorID'(Type Integer)作为两列。如果我在此表上运行以下查询,它只会重置所有行中的VendorID:

SET VendorID = 0 WHERE OrderID = 0; OrderID不应该是0但是由于系统中的一些错误,它逃脱了所有检查并造成了破坏。如果OrderID是Integer类型,则此查询不会执行任何操作。但由于OrderID具有字母表,因此无法将其设置为整数类型。

可以以拒绝更新所有行的方式配置Mysql吗?如果底层数据库不是Mysql,那么这个查询会导致更改吗?

我的环境:

nginx / 1.4.6 Codeigniter(2.x)/ Mysql(5.5)/ InnoDB表类型

请建议将来如何避免此问题,谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想要你可以使用小技巧

update urtable set  `VendorID` = 0 where `OrderID` = 0 and 
(select count(*) from urtable)<>(select count(*) from urtable where `OrderID` = 0)