我有一個mySQL數據庫,它可能有一個名爲jason
的表。 數據庫的一個單獨的實例可能沒有jason
表(它會在共同的其他表)只有在數據庫中存在該表時才更新表的信息
我想對運行兩個數據庫的簡單更新,但更新是針對jason
表。
我知道我可以這樣做
DROP TABLE IF EXISTS `jason`;
是否有可能運行一個更新的東西,如:
IF EXISTS `jason` UPDATE `jason` SET...
我似乎無法得到任何工作。
我有一個mySQL數據庫,它可能有一個名爲jason
的表。 數據庫的一個單獨的實例可能沒有jason
表(它會在共同的其他表)只有在數據庫中存在該表時才更新表的信息
我想對運行兩個數據庫的簡單更新,但更新是針對jason
表。
我知道我可以這樣做
DROP TABLE IF EXISTS `jason`;
是否有可能運行一個更新的東西,如:
IF EXISTS `jason` UPDATE `jason` SET...
我似乎無法得到任何工作。
只要運行update語句,如果表不存在,它就會失敗並且不會造成任何損害。
如果您命名不存在的表,則update語句將無法編譯。您需要生成動態SQL並僅在表存在時執行它。
你也可以參考這些mysql docs。所有的模式信息都在數據庫中,所以基本上你可以用同樣的方式進行任何查詢。底部的例子。
它不會失敗,但如果你堅持,你可以做一個變通:
IF EXISTS (SELECT * FROM Table1)
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)
您不能在mysql中的任意腳本中實際使用該語法,所以它不會工作。 – MarkR 2009-12-02 16:08:48
+1好的,保持簡單:d – Andomar 2009-12-02 15:41:01
偉大的答案(15字符填充) – Jrud 2009-12-02 15:43:46
如果我運行這個在phpMyAdmin中,或另一個DB客戶端作爲更大的一組更新失敗並停止查詢。有沒有辦法告訴mySQL忽略這些類型的錯誤? – Jason 2009-12-02 15:56:34