table tab : {Id : int, Val : int} PRIMARY KEY Id fun check id = res <- oneOrNoRows (SELECT tab.Val FROM tab WHERE tab.Id = {[id]}); return {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]}! fun main x y = r <- rand; let val id = r % x val doFlush = (r / x) % y = 0 in if doFlush then flush id else check id end