Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Tabelle erstellen, wenn noch nicht vorhanden

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von derhenry, 16 Dezember 2016.

  1. derhenry

    derhenry Aktiver Benutzer

    Hallo zusammen,
    ein Excel-Makro erstellt aus einer SQ_Abfrage eine neue Tabelle. Klappt prima:
    Code:
    IF object_id ('meineTabelle', 'U') IS NOT NULL
      drop table 'meineTabelle';
    SELECT ...  INTO ...  FROM ...;
    Ich möchte das so ändern, dass die Tabelle nur angelegt wird, wenn sie nicht bereits vorhanden ist und mein Makro einen Rückgabewert erhält, ob neu erstellt oder bereits vorhanden. So funktioniert es schon mal nicht:
    Code:
    IF object_id ('meineTabelle', 'U') IS NOT NULL
       SELECT 'Tabelle war bereits vorhanden.'
       SELECT ...  INTO ...  FROM ...;
    ELSE
    SELECT 'Tabelle wurde neu erstellt.'
    Wie muss der Code aussehen?
    Danke und Grüße
    derhenry
     
  2. akretschmer

    akretschmer Datenbank-Guru

    die normale Syntax dazu wäre:

    Code:
    akretschmer_test=*> create table if not exists foo as select * from generate_series(1,10) s(s);
    SELECT 10
    akretschmer_test=*> create table if not exists foo as select * from generate_series(1,10) s(s);
    NOTICE:  relation "foo" already exists, skipping
    CREATE TABLE AS
    akretschmer_test=*>
    
    Das zumindest in PostgreSQL, ist aber IMHO Standard.
     
  3. derhenry

    derhenry Aktiver Benutzer

    Hallo,

    vielen Dank für die Hilfe. Jedoch verstehe ich am Code (oder seiner Formatierung hier) überhaupt nichts.
    Bei meinem
    Code:
    IF object_id ('meineTabelle', 'U') IS NOT NULL
      drop table 'meineTabelle';
    würde ich auch gerne bleiben. Mit geht es hier um die Ergänzung, dass der folgende Code eben nur im True-Fall ausgeführt wird.
    Könntest Du mir das an meinem Konstrukt zeigen?

    Danke und Grüße
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ich kenne M$SQL nicht, in PostgreSQL geht es so:

    Code:
    akretschmer_test=*> drop table if exists foo;
    DROP TABLE
    akretschmer_test=*> drop table if exists foo;
    NOTICE:  table "foo" does not exist, skipping
    DROP TABLE
    
     
  5. derhenry

    derhenry Aktiver Benutzer

    Okay, danke.
    Ich suche mal weiter. ;)
     
  6. ukulele

    ukulele Datenbank-Guru

    Du solltest bei IF ELSE immer mit BEGIN und END arbeiten, ansonsten ist das IF nach deinem ; zuende.
    Code:
    IF 1=1
    BEGIN
    SELECT 1
    END
    ELSE
    BEGIN
    SELECT 2
    END
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden