我是Haskell初学者,所以提前道歉!
我一直在这里关注 Persistent 教程。
我有一个具有唯一性约束的数据模型:
Book
gutId Int
UniqueGutId gutId
...
author [AuthorId]
...
Author
gutId Int
UniqueAuthorGutId gutId
...
当我使用这个去insert
记录时:
runSqlite "test.db" $ do
runMigration migrateAll
-- FIXME: This won't work if there's an author that's already in the database.
authorIds <- mapM insert authors
如果记录已经在数据库中,它将不起作用。(它只会返回一个异常。)我可以这样做:
authorIds <- mapM insertUnique authors
但问题是,我需要稍后使用authorIds
来更新Book
记录。所以我只是想知道是否有人知道一种简单的方法来插入一条记录,如果它不存在,并返回新键,或者如果它已经存在则获取记录键,这样我就有一个键数组. 此时的完整代码在此处。