4

我想用 JDBC 输入一个命令来创建一个表,但是在第一次编译之后,当表已经生成时,下一个都会抛出异常。我不明白这怎么可能,因为我已经把 [IF NOT EXISTS] 术语放在那里,所以应该没有 SQL 错误。

public class Test 
{
    public static void main(String[] args) 
    {
        try
        {
            Connection conn = BazaDanych.Polacz();
            Statement stat = conn.createStatement();

           String command = "CREATE TABLE [IF NOT EXISTS] testowatabela2 (id INTEGER, wartosc DOUBLE PRECISION);";

            stat.execute(command);
        }
        catch(SQLException e)
        {
            System.out.println("SQL Exception in Test");
        }
    }
}
4

2 回答 2

4

可能,包含该子句的括号IF NOT EXISTS逐字逐句来自文档: http ://www.postgresql.org/docs/9.1/static/sql-createtable.html

但它们不能出现在实际CREATE TABLE语句中,因为括号表示该子句是可选的。

另一件需要考虑的事情是这IF NOT EXISTS是 PostgreSQL 9.1 的一个新特性,所以它会在旧版本中失败。如果您不确定您使用的版本,请在 SQL 中运行:select version()

于 2012-05-18T12:47:00.957 回答
0

尝试

IF NOT EXISTS (SELECT 1 
           FROM sysobjects 
           WHERE xtype='u' AND name='testowatabela2')
    CREATE TABLE testowatabela2 (id INTEGER, wartosc DOUBLE PRECISION)

编辑

只留下[IF NOT EXISTS]部分。根据这个答案,表是否存在并不重要。

于 2012-05-18T12:10:31.670 回答