2

我正在尝试使用 JavaDB (Derby) 创建表,但如果我尝试添加 IF NOT EXISTS:

CREATE TABLE IF NOT EXISTS etc (ID BIGINT PRIMARY KEY, title VARCHAR(150))

我得到错误:

java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 17 列遇到“NOT”。

我记得它适用于 MySQL。检查表是否存在的语法/最简单的方法是什么?

编辑:

最后我找到了解决方案:

DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTables(null, "APP", "ETC", null);
if (rs.next()) {
    System.out.println("Table " +  rs.getString(3) + " exists");
}

我注意到如果表名是使用引号“etc”创建的,则表名区分大小写,否则 - 名称必须为大写。根据 API 文档:“必须与存储在数据库中的表名匹配”。

4

1 回答 1

-3
if not exists (select * from sysobjects where name='etc' and xtype='U')
create table etc(
   ID BIGINT PRIMARY KEY, title VARCHAR(150)
);

如果它不存在,它将创建一个名为 etc 的表。

更多这个在这里

祝你好运

于 2013-08-08T12:04:08.003 回答