我想用JDBC键入一个命令来创建一个表,但是在第一次编译之后,当已经生成了table时,每个下一个都抛出异常。我不明白这是怎么可能的,因为我在那里放了[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");
}
}
}
答案 0 :(得分: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()
答案 1 :(得分: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]
部分。根据{{3}},表格是否存在并不重要。