【发布时间】:2013-10-31 08:19:19
【问题描述】:
我正在尝试编写检查 H2 表是否存在的 Java 代码:如果它不存在,它首先执行一个 CREATE TABLE 查询,该查询在继续进行之前创建该表。
我遵循了this Google Groups question 中的建议,但它根本不起作用。
如果我运行以下查询:
SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_name = 'word_types'
我返回了一个带有 COUNT 字段的单行,其值为 0;这表明word_types 表不存在。但是当我运行时:
SELECT * FROM word_types
我得到了 0 个结果集,但我使用的 SQL 前端/GUI 向我显示了 word_types 表中存在的所有字段/列。此外,当我深入了解数据库的可用表列表(使用相同的 GUI)时,我看到 word_types 存在。
那么,在尝试确定 H2 表是否存在时,正确的查询是什么? 使用 v1.3.173。提前致谢!
【问题讨论】:
-
查询系统表时可能是大写/小写问题。用lower函数再试一次。
-
为什么不使用
CREATE TABLE IF NOT EXIST myTable?你的逻辑是什么,你每次在查询前检查还是在应用程序启动时检查一次? -
你的方法对我来说运行良好 - 如果第一个查询返回 0,那么第二个查询会给出错误代码
Table doesn't exist -
谢谢@DanBracuk (+1) - 我应该在哪里应用较低的功能?你能提供一个代码示例吗?再次感谢!
-
谢谢@Admit (+1) - 不错的建议,如果这里所有其他方法都失败了,我可能会接受。我的逻辑是在应用启动时检查一次。