有没有办法可以拒绝或避免对 Mysql 表的所有行的更新?
背景:
我有一个表“Orders”,其中两列为“OrderID”(VARCHAR 类型)和“VendorID”(Integer 类型)。如果我在此表上运行以下查询,它只会重置所有行中的 VendorID:
SET VendorID
= 0 WHERE OrderID
= 0;
OrderID 不应该为 0,但由于系统中的某些错误,它逃脱了所有检查并造成了严重破坏。如果 OrderID 是 Integer 类型,则此查询将不会执行任何操作。但由于OrderID有字母,所以不能设置为Integer类型。
Mysql 可以配置为拒绝对所有行的更新吗?如果底层数据库不是Mysql,这个查询的结果会改变吗?
我的环境:
nginx/1.4.6 Codeigniter (2.x)/Mysql (5.5)/InnoDB 表类型
请建议将来如何避免此问题,谢谢。
最佳答案
如果你愿意,你可以使用小技巧
update urtable set `VendorID` = 0 where `OrderID` = 0 and
(select count(*) from urtable)<>(select count(*) from urtable where `OrderID` = 0)
关于mysql - 如何避免使用 mysql 更新所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43406422/