SQL-Statement zum Einfügen oder Ändern [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

SQL-Statement zum Einfügen oder Ändern [ERLEDIGT]

Beitrag von UliTs »

Wahrscheinlich ist es ganz leicht, ich komme nur nicht drauf.
Ich möchte entweder einen Datensatz neu erstellen oder in einem bestehenden Satz (falls es den Suchausdruck schon gibt) ein Feld inkrementieren.

Code: Alles auswählen

Update #TmpTable Set Summe=Summe+1
Where Id=1234
oder

Code: Alles auswählen

Insert into #TmpTable (Id,Summe) values (1234,1)
falls es noch keinen Satz mit Id1234 gibt.
Wie mache ich dies in einem einzigen SQL-Statement (oder einer Folge)?

Uli
Zuletzt geändert von UliTs am Do, 11. Aug 2011 12:29, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: SQL-Statement zum Einfügen oder Ändern

Beitrag von Martin Altmann »

Hmm,
ADS kenne ich nicht wirklich - aber vielleicht geht das da ja auch?

Code: Alles auswählen

IF (EXISTS (SELECT * FROM #TmpTable AS t1
   WHERE t1.Id = 1234))
 begin
   UPDATE #TmpTable
   SET Summe=Summe+1
   WHERE Id = 1234
 end
 else
 begin
   INSERT INTO #TmpTable (Id, Summe)
   VALUES(1234,1)
 end 
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SQL-Statement zum Einfügen oder Ändern

Beitrag von UliTs »

Hallo Martin,

danke für den Code.
Ich habe eben mal in Ruhe geschaut und siehe da, den passenden SQL-Befehl gefunden:

Code: Alles auswählen

MERGE #TmpTable ON Id=1234
WHEN MATCHED THEN UPDATE Set Summe=Summe+1
WHEN NOT MATCHED THEN INSERT (Id,Summe) VALUES (1234,1)
:D

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: SQL-Statement zum Einfügen oder Ändern [ERLEDIGT]

Beitrag von Martin Altmann »

Prima!
Das läuft so aber nur mit ADS - dran denken, wenn Du das Backend mal wechseln solltest 8)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten