2009-12-02 161 views
4

我有一個mySQL數據庫,它可能有一個名爲jason的表。 數據庫的一個單獨的實例可能沒有jason表(它會在共同的其他表)只有在數據庫中存在該表時才更新表的信息

我想對運行兩個數據庫的簡單更新,但更新是針對jason表。

我知道我可以這樣做

DROP TABLE IF EXISTS `jason`; 

是否有可能運行一個更新的東西,如:

IF EXISTS `jason` UPDATE `jason` SET... 

我似乎無法得到任何工作。

回答

5

只要運行update語句,如果表不存在,它就會失敗並且不會造成任何損害。

+3

+1好的,保持簡單:d – Andomar 2009-12-02 15:41:01

+0

偉大的答案(15字符填充) – Jrud 2009-12-02 15:43:46

+0

如果我運行這個在phpMyAdmin中,或另一個DB客戶端作爲更大的一組更新失敗並停止查詢。有沒有辦法告訴mySQL忽略這些類型的錯誤? – Jason 2009-12-02 15:56:34

0

如果您命名不存在的表,則update語句將無法編譯。您需要生成動態SQL並僅在表存在時執行它。

0

你也可以參考這些mysql docs。所有的模式信息都在數據庫中,所以基本上你可以用同樣的方式進行任何查詢。底部的例子。

-1

它不會失敗,但如果你堅持,你可以做一個變通:

IF EXISTS (SELECT * FROM Table1) 
    UPDATE Table1 SET (...) WHERE Column1='SomeValue' 
ELSE 
    INSERT INTO Table1 VALUES (...) 
+0

您不能在mysql中的任意腳本中實際使用該語法,所以它不會工作。 – MarkR 2009-12-02 16:08:48

相關問題