2017-04-14 73 views
0

更新所有行是有通過更新到MySQL表的所有行可能被拒絕或迴避的方式嗎?怎樣避免使用MySQL的

背景:

我有一個表「訂單」具有「訂單ID」(類型VARCHAR)和「廠商ID」(類型整數)作爲兩個列。如果我運行在此表下面的查詢,它只是重置廠商ID的所有行:

SET VendorID = 0 WHERE OrderID = 0; 訂單ID不應該是0,但因爲系統中的一些錯誤的,它躲過所有的檢查,並造成嚴重破壞。如果OrderID是Integer類型的,那麼這個查詢就不會做任何事情。但是由於OrderID具有字母,因此無法將其設置爲整數類型。

的Mysql能以這樣的方式進行配置,使其拒絕更新的所有行?如果底層數據庫不是Mysql,這個查詢的結果會改變嗎?

我的環境:

的nginx/1.4.6笨(2.X)/ MySQL的(5.5)/ InnoDB表型

請建議如何這個問題可以在今後避免,謝謝。

+0

「一些系統錯誤」 ......我不知道那會是什麼? –

+0

我沒有聽說過,你描述的錯誤。通常,操作將應用於OrderID = 0的所有行。您可以發佈完整查詢嗎?也許是錯誤或一些誤解與SQL查詢 –

+0

這裏有一個想法:不要讓字母IDS – Strawberry

回答

0

如果你願意,你可以使用小竅門

update urtable set `VendorID` = 0 where `OrderID` = 0 and 
(select count(*) from urtable)<>(select count(*) from urtable where `OrderID` = 0)