import Database.HaskellDB import Database.HaskellDB.HDBRec import Database.HaskellDB.Query import Database.HaskellDB.PrimQuery import TestConnect import Dp037.Test_default_auto {- MySQL: CREATE TABLE test_default_auto ( auto_col int NOT NULL auto_increment PRIMARY KEY, def1 int NOT NULL default '23', def2 int default '45', nodef1 int NOT NULL, nodef2 int NULL ) PostgreSQL: CREATE TABLE test_default_auto ( auto_col serial, def1 int NOT NULL default '23', def2 int default '45', nodef1 int NOT NULL, nodef2 int NULL ) -} showResults rs = mapM_ (putStrLn . unwords . map (($ "") . snd) . showRecRow) rs showTable db = query db (table test_default_auto) >>= showResults last_insert_id :: Expr Int last_insert_id = Expr (ConstExpr (OtherLit "last_insert_id()")) lid_q = project (def1 << last_insert_id) test db = do putStrLn "Before:" showTable db insert db test_default_auto (auto_col << _default # def1 << _default # def2 << _default # -- PostgreSQL make DEFAULT == NULL, -- so _default doesn't work for -- nodef1 nodef1 << _default # nodef2 << _default) putStrLn "After:" showTable db putStrLn $ show $ showSql lid_q (r:_) <- query db lid_q putStrLn $ "New id: " ++ show (r!def1) main = argConnect test