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

SQL Statement

Dieses Thema im Forum "Microsoft Access" wurde erstellt von TommyS, 17 Juli 2019.

  1. TommyS

    TommyS Benutzer

    Hallo,

    kann mir jemand bei meinem SQL Statement helfen? Ich möchte, dass wenn es den Eintrag schon gibt, er diese Ignorieren soll.


    Insert INTO ArtikelNr VALUE (…)


    WHERE "3434" NOT IN (Select AriktelNr From Artikel) AND

    isa_id = "3847"






    Irgendwie funktioniert das aber nicht. Vielleicht hat ja einer von euch eine Idee
     
  2. TommyS

    TommyS Benutzer

    ICh hab ausversehen den Code falsch geschrieben, wollte es abkürzen:

    Insert INTO ArtikelNr (a, b, c, d) VALUE ("a", "b", "c", "d")

    WHERE "3434" NOT IN (Select AriktelNr From Artikel) AND

    isa_id = "3847"
     
  3. akretschmer

    akretschmer Datenbank-Guru

    INSERT kennt keine Where-Bedingung. Was Du machen kannst: setze einen PRIMARY KEY auf die Spalte, oder UNIQUE, und reagiere auf Fehler. Die Syntax ist von System zu System unterschiedlich, hier eine Demo mit PostgreSQL:

    Code:
    test=*# create table artikel (nummer int primary key);
    CREATE TABLE
    test=*# insert into artikel values (4711) on conflict (nummer) do nothing;
    INSERT 0 1
    test=*# select * from artikel ;
     nummer
    --------
       4711
    (1 row)
    
    test=*# insert into artikel values (4711) on conflict (nummer) do nothing;
    INSERT 0 0
    test=*# select * from artikel ;
     nummer
    --------
       4711
    (1 row)
    
    test=*#
    
     
  4. Dukel

    Dukel Datenbank-Guru

    Es gibt ein Upsert (heist bei anderen Datenbanksystemen evtl. anderst).
    UPSERT - PostgreSQL wiki
    Dieses macht ein Insert, wenn es einen Eintrag nicht gibt, ansonsten kann man auf diesen reagieren (z.B. UPDATE oder ignorieren).
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Nicht ganz korrekt, ein UPSERT - Befehl gibt es in PG nicht. Bevor es INSERT ... ON CONFLICT gab, gab es diverse, mehr oder weniger gut funktionierende Alternativen, die Diskussion dazu erfolgte meist über den Begriff UPSERT, daher kommt das. Simon Riggs und andere arbeiten derzeit an MERGE, wird aber auch in 12 noch nicht sein.
     
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