4 Stimmen

SQLexception wenn Tabelle vorhanden ist

Ich möchte einen Befehl mit JDBC eingeben, um eine Tabelle zu erstellen, aber nach dem ersten Kompilieren, wenn die Tabelle bereits generiert wurde, wirft jede weitere eine Ausnahme. Ich verstehe nicht, wie das möglich ist, denn ich habe den Ausdruck [IF NOT EXISTS] dort platziert, also sollte es keinen SQL-Fehler geben.

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");
        }
    }
}

4voto

Daniel Vérité Punkte 52959

Die Klammern um die IF NOT EXISTS Klausel stammen wahrscheinlich wörtlich aus der Dokumentation: http://www.postgresql.org/docs/9.1/static/sql-createtable.html

Sie sollten jedoch nicht in einem tatsächlichen CREATE TABLE Statement vorhanden sein, da die Klammern bedeuten, dass die Klausel optional ist.

Eine weitere Sache zu beachten ist, dass IF NOT EXISTS ein neues Feature von PostgreSQL 9.1 ist, daher würde es bei älteren Versionen fehlschlagen. Wenn Sie sich nicht sicher sind, welche Version Sie verwenden, führen Sie in SQL aus: select version()

0voto

juergen d Punkte 194549

Versuchen

IF NOT EXISTS (SELECT 1 
           FROM sysobjects 
           WHERE xtype='u' AND name='testowatabela2')
    ERSTELLE TABELLE testowatabela2 (id INTEGER, wert DOUBLE PRECISION)

Bearbeiten

Lassen Sie den [IF NOT EXISTS] Teil einfach stehen. Laut dieser Antwort spielt es keine Rolle, ob die Tabelle existiert oder nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X