deleteFromTable :: (IConnection con) => Bool -> Integer -> (Table, Column) -> Model con ()
deleteFromTable mustExist keyVal (table, keyCol) = do
   cnn <- ask
   modified <- liftIO $ withTransaction cnn 
      (\cnn -> run cnn stmt [toSql keyVal])
   when (mustExist && modified == 0) $ throwError 
      $ printf "Could not find a row to delete when executing 'DELETE FROM %s WHERE %s=%d'."
         table keyCol keyVal
   where
      stmt = printf "DELETE FROM %s WHERE %s=?" table keyCol
deleteFromTable :: (IConnection con) => Bool -> Integer -> (Table, Column) -> Model con ()
deleteFromTable mustExist keyVal (table, keyCol) = do
   cnn <- ask
   modified <- liftIO $ withTransaction cnn 
      (\cnn -> run cnn stmt [toSql keyVal])
   when (mustExist && modified == 0) $ throwError 
      $ printf "Could not find a row to delete when executing 'DELETE FROM %s WHERE %s=%d'."
         table keyCol keyVal
   where
      stmt = printf "DELETE FROM %s WHERE %s=?" table keyCol
deleteFromTable mustExist keyVal (table, keyCol) = do
   cnn <- ask
   modified <- liftIO $ withTransaction cnn 
      (\cnn -> run cnn stmt [toSql keyVal])
   when (mustExist && modified == 0) $ throwError 
      $ printf "Could not find a row to delete when executing 'DELETE FROM %s WHERE %s=%d'."
         table keyCol keyVal
   where
      stmt = printf "DELETE FROM %s WHERE %s=?" table keyCol