我有一个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