SQL Statement

TommyS

Benutzer
Beiträge
9
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
 
Werbung:
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"
 
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=*#
 
Werbung:
Es gibt ein Upsert (heist bei anderen Datenbanksystemen evtl. anderst).
UPSERT - PostgreSQL wiki

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.
 
Zurück
Oben