diff --git a/Database/Persist/GenericSql.hs b/Database/Persist/GenericSql.hs
--- a/Database/Persist/GenericSql.hs
+++ b/Database/Persist/GenericSql.hs
@@ -97,16 +97,16 @@
 instance (MonadBaseControl IO m, MonadIO m, C.MonadThrow m, C.MonadUnsafeIO m, MonadLogger m) => PersistStore SqlPersist m where
     insert val = do
         conn <- SqlPersist ask
-        let esql = insertSql conn (entityDB t) (map fieldDB $ entityFields t)
+        let esql = insertSql conn (entityDB t) (map fieldDB $ entityFields t) (entityID t)
         i <-
             case esql of
-                Left sql -> C.runResourceT $ R.withStmt sql vals C.$$ do
+                ISRSingle sql -> C.runResourceT $ R.withStmt sql vals C.$$ do
                     x <- CL.head
                     case x of
                         Just [PersistInt64 i] -> return i
                         Nothing -> error $ "SQL insert did not return a result giving the generated ID"
                         Just vals' -> error $ "Invalid result from a SQL insert, got: " P.++ P.show vals'
-                Right (sql1, sql2) -> do
+                ISRInsertGet sql1 sql2 -> do
                     execute' sql1 vals
                     C.runResourceT $ R.withStmt sql2 [] C.$$ do
                         Just [PersistInt64 i] <- CL.head
@@ -124,7 +124,9 @@
                 , escapeName conn (entityDB t)
                 , " SET "
                 , T.intercalate "," (map (go conn . fieldDB) $ entityFields t)
-                , " WHERE id=?"
+                , " WHERE "
+                , escapeName conn $ entityID t
+                , "=?"
                 ]
             vals = map toPersistValue (toPersistFields val) `mappend` [unKey k]
         execute' sql vals
@@ -148,7 +150,9 @@
                 , cols
                 , " FROM "
                 , escapeName conn $ entityDB t
-                , " WHERE id=?"
+                , " WHERE "
+                , escapeName conn $ entityID t
+                , "=?"
                 ]
             vals' = [unKey k]
         C.runResourceT $ R.withStmt sql vals' C.$$ do
@@ -168,7 +172,9 @@
         sql conn = concat
             [ "DELETE FROM "
             , escapeName conn $ entityDB t
-            , " WHERE id=?"
+            , " WHERE "
+            , escapeName conn $ entityID t
+            , "=?"
             ]
 
 insrepHelper :: (MonadIO m, PersistEntity val, MonadLogger m)
diff --git a/Database/Persist/GenericSql/Internal.hs b/Database/Persist/GenericSql/Internal.hs
--- a/Database/Persist/GenericSql/Internal.hs
+++ b/Database/Persist/GenericSql/Internal.hs
@@ -15,6 +15,7 @@
     , mkColumns
     , Column (..)
     , logSQL
+    , InsertSqlResult (..)
     ) where
 
 import qualified Data.Map as Map
@@ -35,10 +36,13 @@
 import Control.Monad.Logger (logDebugS)
 import Data.Maybe (mapMaybe, listToMaybe)
 
+data InsertSqlResult = ISRSingle Text
+                     | ISRInsertGet Text Text
+
 data Connection = Connection
     { prepare :: Text -> IO Statement
-    -- ^ table name, column names, either 1 or 2 statements to run
-    , insertSql :: DBName -> [DBName] -> Either Text (Text, Text)
+    -- ^ table name, column names, id name, either 1 or 2 statements to run
+    , insertSql :: DBName -> [DBName] -> DBName -> InsertSqlResult
     , stmtMap :: IORef (Map.Map Text Statement)
     , close :: IO ()
     , migrateSql :: forall v. PersistEntity v
diff --git a/persistent.cabal b/persistent.cabal
--- a/persistent.cabal
+++ b/persistent.cabal
@@ -1,5 +1,5 @@
 name:            persistent
-version:         1.0.1.3
+version:         1.0.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -35,7 +35,7 @@
                    , conduit                  >= 0.5     && < 0.6
                    , resourcet                >= 0.3     && < 0.5
                    , monad-control            >= 0.3     && < 0.4
-                   , lifted-base              >= 0.1
+                   , lifted-base              >= 0.1     && < 0.2
                    , pool-conduit             >= 0.1     && < 0.2
                    , path-pieces              >= 0.1     && < 0.2
                    , aeson                    >= 0.5     && < 0.7
