diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,9 +1,16 @@
 # Changelog for persistent
 
+# 2.18.1.0
+* [#1616](https://github.com/yesodweb/persistent/pull/1616)
+  * Allow overriding the default cascade option for foreign keys. 
+* [#1608](https://github.com/yesodweb/persistent/pull/1608)
+  * Improves documentation on getBy with nullable fields
+  * Updates the warning text present when you try to make a Unique field that is nullable
+
 # 2.18.0.0
 
 * [#1610](https://github.com/yesodweb/persistent/pull/1610)
-  * Added `NoAction` as a `CascadeAction` 
+  * Added `NoAction` as a `CascadeAction`
 
 # 2.17.1.0
 
diff --git a/Database/Persist/Class/PersistUnique.hs b/Database/Persist/Class/PersistUnique.hs
--- a/Database/Persist/Class/PersistUnique.hs
+++ b/Database/Persist/Class/PersistUnique.hs
@@ -57,6 +57,8 @@
 class (PersistStoreRead backend) => PersistUniqueRead backend where
     -- | Get a record by unique key, if available. Returns also the identifier.
     --
+    -- If your unique key contains a nullable field, then, by default, getBy will not match if any of the fields are NULL.
+    --
     -- === __Example usage__
     --
     -- With <#schema-persist-unique-1 schema-1> and <#dataset-persist-unique-1 dataset-1>:
diff --git a/Database/Persist/Sql.hs b/Database/Persist/Sql.hs
--- a/Database/Persist/Sql.hs
+++ b/Database/Persist/Sql.hs
@@ -61,6 +61,8 @@
     , emptyBackendSpecificOverrides
     , getBackendSpecificForeignKeyName
     , setBackendSpecificForeignKeyName
+    , getBackendSpecificForeignKeyCascadeDefault
+    , setBackendSpecificForeignKeyCascadeDefault
     , defaultAttribute
 
       -- * Internal
diff --git a/Database/Persist/Sql/Internal.hs b/Database/Persist/Sql/Internal.hs
--- a/Database/Persist/Sql/Internal.hs
+++ b/Database/Persist/Sql/Internal.hs
@@ -10,6 +10,8 @@
     , BackendSpecificOverrides (..)
     , getBackendSpecificForeignKeyName
     , setBackendSpecificForeignKeyName
+    , getBackendSpecificForeignKeyCascadeDefault
+    , setBackendSpecificForeignKeyCascadeDefault
     , emptyBackendSpecificOverrides
     ) where
 
@@ -36,6 +38,7 @@
 data BackendSpecificOverrides = BackendSpecificOverrides
     { backendSpecificForeignKeyName
         :: Maybe (EntityNameDB -> FieldNameDB -> ConstraintNameDB)
+    , backendSpecificForeignKeyCascadeDefault :: CascadeAction
     }
 
 -- | If the override is defined, then this returns a function that accepts an
@@ -61,6 +64,26 @@
 setBackendSpecificForeignKeyName func bso =
     bso{backendSpecificForeignKeyName = Just func}
 
+-- | If the override is defined, then this specifies what cascade action
+-- should be used if there is none defined for the column.
+--
+-- @since 2.18.1.0
+getBackendSpecificForeignKeyCascadeDefault
+    :: BackendSpecificOverrides
+    -> CascadeAction
+getBackendSpecificForeignKeyCascadeDefault =
+    backendSpecificForeignKeyCascadeDefault
+
+-- | Set the backend's default cascade action.
+--
+-- @since 2.18.1.0
+setBackendSpecificForeignKeyCascadeDefault
+    :: CascadeAction
+    -> BackendSpecificOverrides
+    -> BackendSpecificOverrides
+setBackendSpecificForeignKeyCascadeDefault action bso =
+    bso{backendSpecificForeignKeyCascadeDefault = action}
+
 findMaybe :: (a -> Maybe b) -> [a] -> Maybe b
 findMaybe p = listToMaybe . mapMaybe p
 
@@ -68,7 +91,7 @@
 --
 -- @since 2.11
 emptyBackendSpecificOverrides :: BackendSpecificOverrides
-emptyBackendSpecificOverrides = BackendSpecificOverrides Nothing
+emptyBackendSpecificOverrides = BackendSpecificOverrides Nothing Restrict
 
 defaultAttribute :: [FieldAttr] -> Maybe Text
 defaultAttribute = findMaybe $ \case
@@ -171,9 +194,11 @@
     -- explicitly makes migrations run smoother.
     overrideNothings (FieldCascade{fcOnUpdate = upd, fcOnDelete = del}) =
         FieldCascade
-            { fcOnUpdate = upd <|> Just Restrict
-            , fcOnDelete = del <|> Just Restrict
+            { fcOnUpdate = upd <|> Just defaultAction
+            , fcOnDelete = del <|> Just defaultAction
             }
+      where
+        defaultAction = (backendSpecificForeignKeyCascadeDefault overrides)
 
     ref
         :: FieldNameDB
diff --git a/Database/Persist/TH/Internal.hs b/Database/Persist/TH/Internal.hs
--- a/Database/Persist/TH/Internal.hs
+++ b/Database/Persist/TH/Internal.hs
@@ -1524,7 +1524,8 @@
             , "column in question.  If you understand this feature of SQL and still "
             , "intend to add a uniqueness constraint here,    *** Use a \"!force\" "
             , "attribute on the end of the line that defines your uniqueness "
-            , "constraint in order to disable this check. ***"
+            , "constraint in order to disable this check. ***\n"
+            , "By default, this means using `getBy`, `insertBy`, or anything that fetches by unique key will NOT match if any of the fields are NULL."
             ]
 
 -- | This function renders a Template Haskell 'Type' for an 'UnboundFieldDef'.
diff --git a/persistent.cabal b/persistent.cabal
--- a/persistent.cabal
+++ b/persistent.cabal
@@ -1,5 +1,5 @@
 name:               persistent
-version:            2.18.0.0
+version:            2.18.1.0
 license:            MIT
 license-file:       LICENSE
 author:             Michael Snoyman <michael@snoyman.com>
