diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,6 +1,11 @@
 # Revision history for Selda
 
 
+## 0.1.12.1 -- 2018-02-27
+
+* New PPConfig hook for more flexibility when compiling types.
+
+
 ## 0.1.12 -- 2018-01-11
 
 * Allow recursive and optional foreign keys.
diff --git a/selda.cabal b/selda.cabal
--- a/selda.cabal
+++ b/selda.cabal
@@ -1,5 +1,5 @@
 name:                selda
-version:             0.1.12
+version:             0.1.12.1
 synopsis:            Multi-backend, high-level EDSL for interacting with SQL databases.
 description:         This package provides an EDSL for writing portable, type-safe, high-level
                      database code. Its feature set includes querying and modifying databases,
@@ -84,7 +84,7 @@
   build-depends:
       base                 >=4.8   && <5
     , bytestring           >=0.10  && <0.11
-    , exceptions           >=0.8   && <0.9
+    , exceptions           >=0.8   && <0.10
     , hashable             >=1.1   && <1.3
     , mtl                  >=2.0   && <2.3
     , text                 >=1.0   && <1.3
diff --git a/src/Database/Selda/SQL/Print/Config.hs b/src/Database/Selda/SQL/Print/Config.hs
--- a/src/Database/Selda/SQL/Print/Config.hs
+++ b/src/Database/Selda/SQL/Print/Config.hs
@@ -15,6 +15,9 @@
     --   please use the 'ppTypePK' record instead.
     ppType :: SqlTypeRep -> Text
 
+    -- | Hook that allows you to modify 'ppType' output.
+  , ppTypeHook :: SqlTypeRep -> [ColAttr] -> (SqlTypeRep -> Text) -> Text
+
     -- | The SQL type name of the given type for primary keys uses.
   , ppTypePK :: SqlTypeRep -> Text
 
@@ -24,6 +27,9 @@
     -- | List of column attributes.
   , ppColAttrs :: [ColAttr] -> Text
 
+    -- | Hook that allows you to modify 'ppColAttrs' output.
+  , ppColAttrsHook :: SqlTypeRep -> [ColAttr] -> ([ColAttr] -> Text) -> Text
+
     -- | The value used for the next value for an auto-incrementing column.
     --   For instance, @DEFAULT@ for PostgreSQL, and @NULL@ for SQLite.
   , ppAutoIncInsert :: Text
@@ -45,9 +51,11 @@
 defPPConfig :: PPConfig
 defPPConfig = PPConfig
     { ppType = defType
+    , ppTypeHook = \ty _ _ -> defType ty
     , ppTypePK = defType
     , ppPlaceholder = T.cons '$' . T.pack . show
     , ppColAttrs = T.unwords . map defColAttr
+    , ppColAttrsHook = \_ ats _ -> T.unwords $ map defColAttr ats
     , ppAutoIncInsert = "NULL"
     , ppMaxInsertParams = Nothing
     }
diff --git a/src/Database/Selda/Table/Compile.hs b/src/Database/Selda/Table/Compile.hs
--- a/src/Database/Selda/Table/Compile.hs
+++ b/src/Database/Selda/Table/Compile.hs
@@ -44,9 +44,11 @@
 compileTableCol :: PPConfig -> ColInfo -> Text
 compileTableCol cfg ci = Text.unwords
     [ fromColName (colName ci)
-    , ppType' cfg cty <> " " <> ppColAttrs cfg (colAttrs ci)
+    , typeHook <> " " <> colAttrsHook
     ]
   where
+    typeHook = ppTypeHook cfg cty attrs (ppType' cfg)
+    colAttrsHook = ppColAttrsHook cfg cty attrs (ppColAttrs cfg)
     cty = colType ci
     attrs = colAttrs ci
     ppType' 
