I uge 16/2008 skrev jeg om, hvordan det er muligt at lave en SELECT kombineret med en INSERT, så du kan få at vide, hvordan kolonnerne i slutresultatet er blevet udfyldt. I DB2 version 9 blev SELECT udvidet yderligere, så nu er det muligt at kombinere SELECT med UPDATE og SELECT med DELETE.
I en SELECT med UPDATE kan du vælge at få returneret de opdaterede rækker, som de så ud før opdateringen:
Det samme eksempel, hvor de opdaterede rækker returneres efter selve opdateringen:
I begge eksempler vil de returnerede værdier i keyCol være de samme, da de ikke er blevet opdateret. Det første eksempel vil returnere de oprindelige værdier i col3, mens det andet eksempel vil returnere de nye værdier i col3. Hvis der havde optrådt en opdatering af en TIMESTAMP kolonne, hvor den nye værdi sættes til CURRENT TIMESTAMP, så kan du altså med ovenstående metode få den aktuelle værdi af CURRENT TIMESTAMP returneret.
Når det kommer til SELECT med DELETE er der kun en mulighed, nemlig at få returneret rækkerne, som de så ud, før de blev slettet:
SELECT med DELETE kan med fordel anvendes, hvis man ønsker at gemme de slettede data på en anden måde end i DB2-loggen, for eksempel for at overføre dem til en anden DB2-tabel. Mulighederne er i hvert fald mange.