table tab : {Id : int, Val : int} PRIMARY KEY Id fun check id = res <- oneOrNoRows (SELECT tab.Val FROM tab WHERE tab.Id = {[id]}); return cache {case res of None => ? | Some row => {[row.Tab.Val]}} fun flush id = dml (UPDATE tab SET Val = Val + 1 WHERE Id = {[id]}); return Changed {[id]}!