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

标签 mysql database

有没有办法可以拒绝或避免对 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/

相关文章:

sql - 将四个表列限制为 Firebird DBMS 中的不同值

database - 如何在 nosql DB 中以最少的重复存储翻译?

php - 无法正确使用查询

MySQL - 更新日期/时间 - 10 分钟。在未来

mysql - 我们可以在 yii 的 Gridview 中有一列,其中该列不属于任何模型吗

MySQL:通过删除/聚合重复项和常量值来清理数据

php - 如何每分钟自动检查MySQL数据库中的记录..?

c - 在嵌入上备份 SQLite3 数据库

c# - 从数据库创建按钮 - 发生 System.NullReferenceException

mysql - 插入前创建触发器