有没有办法可以拒绝或避免对Mysql表的所有行进行更新?
背景:
我有一个'OrderID'(Type VARCHAR)和'VendorID'(Type Integer)作为两列的表。 如果我在这个表上运行下面的查询,它只是重置所有行中的VendorID:
SET `VendorID` = 0 WHERE `OrderID` = 0
OrderID不应该是0,而是因为系统中的一些错误,它逃脱了所有的检查并造成了严重破坏。 如果OrderID是Integertypes的,这个查询就不会做任何事情。 但是由于OrderID具有字母,因此不能设置为整数types。
Mysql能否以拒绝所有行的更新的方式进行configuration? 如果底层数据库不是Mysql,这个查询的结果会改变吗?
我的环境:
nginx / 1.4.6 Codeigniter(2.x)/ Mysql(5.5)/ InnoDB表types
请build议今后如何避免这个问题,谢谢。
你在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);