diff --git a/hmemdb.cabal b/hmemdb.cabal
--- a/hmemdb.cabal
+++ b/hmemdb.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                hmemdb
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            In-memory relational database
 description:         Library that provides a sort of relational database in memory (which could be saved to the disk, however). Very untested.
 license:             BSD3
diff --git a/src/Data/HMemDb.hs b/src/Data/HMemDb.hs
--- a/src/Data/HMemDb.hs
+++ b/src/Data/HMemDb.hs
@@ -9,6 +9,7 @@
      SP,
 -- * Tables
      Table,
+     foldTable_,
      TableVar,
      TableVarS,
      forTV,
@@ -54,6 +55,6 @@
     (ColSpec, FullSpec(FullSpec, keySpec, tabSpec),
      Keys(Keys), KeySpec, TableSpec(TableSpec),
      key, nonunique, val, unique, (:+:)((:+:)))
-import Data.HMemDb.Tables (Table)
+import Data.HMemDb.Tables (Table, foldTable_)
 import Data.HMemDb.TableVars
-    (TableVar, TableVarS, deleteTV, forTV, insert, modifyTV, readTV)
+    (TableVar, TableVarS, deleteTV, forTV, insert, modifyTV, readTV)
diff --git a/src/Data/HMemDb/Persistence.hs b/src/Data/HMemDb/Persistence.hs
--- a/src/Data/HMemDb/Persistence.hs
+++ b/src/Data/HMemDb/Persistence.hs
@@ -58,4 +58,4 @@
                   do writeTVar (tabCount pt) tC
                      for_ pairs (runMaybeT . insertRefIntoTable pt)
                      return (Table pt, uf)
-          in genPairs `oBind` insPairs
+          in genPairs `oBind` insPairs
diff --git a/src/Data/HMemDb/Tables.hs b/src/Data/HMemDb/Tables.hs
--- a/src/Data/HMemDb/Tables.hs
+++ b/src/Data/HMemDb/Tables.hs
@@ -4,13 +4,15 @@
      PreTable(PreTable, tabCount, tabContent, tabConv, tabIndices),
      Table(Table),
      deleteFromTable,
+     foldTable_,
      insertIntoTable,
      insertRefIntoTable,
      modifyInTable
     ) where
-import Control.Concurrent.STM (TVar, modifyTVar', newTVar, readTVar, writeTVar)
+import Control.Concurrent.STM (STM, TVar, modifyTVar', newTVar, readTVar, writeTVar)
 import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Maybe (runMaybeT)
+import Control.Monad.Trans.Maybe (MaybeT(MaybeT, runMaybeT))
+import Data.Foldable (for_)
 import qualified Data.Map as M (Map, delete, insert)
 import Data.HMemDb.Bin (Bin)
 import Data.HMemDb.Binary (MS)
@@ -68,3 +70,9 @@
        lift $ modifyInKeys new ref $ tabIndices pt
        lift $ writeTVar (refContent ref) $ Just r
        return old
+foldTable_ :: (a -> MS b) -> Table a -> STM ()
+-- ^ This function traverses through all values in the table, applying the same action
+-- to all of them. Errors are silently ignored.
+foldTable_ h (Table pt) =
+    do mp <- readTVar $ tabContent pt
+       for_ mp $ \tv -> runMaybeT $ MaybeT (readTVar tv) >>= rcTo (tabConv pt) >>= h
