Seite 1 von 1

INSERT nur wenn nicht vorhanden [ERLEDIGT]

Verfasst: So, 05. Mär 2023 20:03
von Manfred
Es ist mal wieder zum Mäusemelken. Was ist hier dran falsch?

Code: Alles auswählen

INSERT INTO gemeinsameDaten.abwesenheitstage (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus)
VALUES('2023-03-07',TRUE,'872                                 ','1                                   ',2023)
WHERE NOT EXISTS (SELECT idfahrer, datum FROM gemeinsameDaten.abwesenheitstage WHERE idfahrer='872                                 ' AND datum ='2023-03-07')
poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117; [SAP][Advantage SQL Engine]Unexpected token: WHERE -- Expecting semicolon. -- Location of error in the SQL statement is: 208 (line: 3 column: 1)
ich habe ein ";" hinter Values gemacht und auch hinter where. Nichs zu machen. :banghead: :banghead: :banghead:

Re: INSERT nur wenn nicht vorhanden

Verfasst: Mo, 06. Mär 2023 8:17
von Marcus Herz
Oder so

Code: Alles auswählen

MERGE gemeinsameDaten.abwesenheitstage
on idfahrer='872' AND datum ='2023-03-07'
when not exists then insert  (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus)
VALUES('2023-03-07',TRUE,'872','1',2023)
Ich würd auf jedem Fall die rechten Blanks entfernen. Wahrscheinlich liegst daran. Trailing Blanks werden nicht gespeichert.

Re: INSERT nur wenn nicht vorhanden

Verfasst: Mo, 06. Mär 2023 8:25
von Manfred
oh, ich hatte gar nicht gewußt, das man MERGE auch als INSERT benutzen kann. Ich hatte das nur im Zusammenhang mit APPEND aus einer anderen Tabelle gesehen.

Re: INSERT nur wenn nicht vorhanden

Verfasst: Mo, 06. Mär 2023 8:30
von Manfred
was mich jetzt aber trotzdem wundert ist, das der Insert Befehl nicht klappt. Der sollte lt. Internetrecherche klappen. Zumindest wird der so vorgeschlagen. Oder spielt das ADS nicht mit?

Re: INSERT nur wenn nicht vorhanden

Verfasst: Mo, 06. Mär 2023 8:47
von Manfred
das muß wohl so heißen

Code: Alles auswählen

MERGE gemeinsameDaten.abwesenheitstage
ON idfahrer='872' AND datum ='2023-03-06'
WHEN NOT MATCHED THEN INSERT (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus) VALUES ('2023-03-06',TRUE,'872','1', 2023)
MATCHED wird verlangt nicht EXISTS

Re: INSERT nur wenn nicht vorhanden

Verfasst: Mo, 06. Mär 2023 11:03
von nightcrawler
WHERE geht nicht bei INSERT, sondern dann im Zusammenhang mit SELECT....

Code: Alles auswählen

INSERT INTO .... SELECT .... FROM WHERE ...