如何避免更新 Mysql 表中的所有行?

如何避免更新 Mysql 表中的所有行?

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

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

答案1

您在 DBA Stack Exchange 上的问题被标记为转换问题的重复...我怀疑转换您的数据是否能解决问题,所以我使用这个问题来回答。

Order_id 听起来应该是一个主键(既唯一又不为空)......

alter table orders
add primary key (order_id);

如果 order_id 不是一个好的主键(即,它是可空的),那么就将其设为唯一键......

alter table orders
add constraint orders_orderid_uk
    unique (order_id);

相关内容