Hallo Leute, ich brauche drigend eure Hilfe. Bin neu in SQL unterwegs, seid daher bitte nicht böse, wenn dies eine blöde Frage ist…
Folgendes Problem.
Ich muss eine Tabelle “updaten”, also bestimme Daten ändern.
Die Tabelle heisst “Kontakte”, geändert werden soll das Feld “anlass” in 208 (numerisch), wenn das Feld kontakte.aktivitaet 1,2,4,6,11,21,31 beinhaltet. wenn nicht, sollen die Werte in kontakte.anlass so bleiben wie sie sind. Gleichzeitig soll, wenn kontakte.anlass geändert wird, der ursprüngliche Wert in Kontakte.Notizen angehangen werden (dort können u.U. schon Werte enthalten sein. Allerdings soll nicht der Zahlenwert aus Kontakte.anlass, sondern der “gedolmetschte” Wert aus anlaesse.name angehängt werden. Die Tabelle anlaesse bestet aus anlaesse.nr (identisch mit kontakte.anlass) und anlaesse.name (quasi die Bezeichnung im Klartext).
Kann ih dies in einem Statement durchführen, oder müssen zwei erfolgen (Erst anhängen im kontakte.notiz und dann Umstellung von kotakte.anlaesse)? Und wie müssen die Statements aussehen?
Je nach Version geht das mit einem einzelnen SQL-Befehl. Also, wenn Du 9.1 hast, dann geht das mit einem einzigen Befehl (Stichwort: writeable CTE). Ansonsten brauchst Du mehrere, die Du dann in eine Transaktion bündeln solltest. Um das SQL jetzt zu basteln hab ich aber grad keine Zeit…
Ach ja: wenn immer die ‘alte’ Version archiviert werden soll, bietet sich auch ein TRIGGER an, der das übernimmt. Dann erzwingst du das durch die Datenbank selbst, und überläßt es nicht dem ‘guten Willen’ desjenigen, der das Update durchführt.
Also, Du hast nun einige Hinweise, ich hoffe, Du kommst weiter …
08:38:20: Fehlertext: [IBM][CLI Driver][DB2/NT] SQL0104N Auf “: ’ || anlaesse.name” folgte das unerwartete Token “from”. Zu den möglichen Token gehören: “.”. SQLSTATE=42601