Insert und Update im gleichen SQL-Query

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Das ist ja mal eine effiziente Methode, wie man ein SQL-Query für den Insert und das Update verwenden kann:

1<cfquery name="qryEintrag" datasource="Dsn">
2 SET NOCOUNT ON
3 IF NOT EXISTS
4 SELECTT * FROM Benutzer
5 WHERE strEmmail = '#form.email#'
6 AND ....)
7 BEGIN
8 INSERT INTO Benutzer
9 (strEmail, strName, strVorname, ...)
10 VALUES
11 ('#form.email#',
12 '#form.name#',
13 '#form.vorname#',
14 ...)
15 SELECT SCOPE_IDENTITY() AS newId
16 END
17 ELSE
18 BEGIN
19 UPDATE Benutzer
20 SET strName= '#form.name#',
21 strVorname= '#form.vorname#',
22 WHERE strEmail = '#form.email#'
23
24 SELECT id AS newid
25 FROM Benutzer
26 WHERE strEmail = '#form.email#'
27
28 END
29 SET NOCOUNT OFF
30</cfquery>
31<cfset benutzerid = qryEintrag.newid />

Natürlich gehören hier noch die cfqueryparam-Tags hin, aber dann wär’s ganz unleserlich geworden. Der Code ist übrigens nur für MSSQL.