有没有办法可以拒绝或避免更新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表类型
请建议将来如何避免此问题,谢谢。
答案 0 :(得分:0)
如果你想要你可以使用小技巧
update urtable set `VendorID` = 0 where `OrderID` = 0 and
(select count(*) from urtable)<>(select count(*) from urtable where `OrderID` = 0)