2009-12-02 159 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

相关问题