我想通过以下简化模式将现有数据库与Persistent一起使用:
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Entity sql=entities
deriving Show
EntityLink sql=entity_links
sourceId EntityId
targetId EntityId
deriving Show
|]
entities
表具有一个id
列,这很好。但是,entity_links
表没有一个,我不想添加一个。相反,它具有主键(source_id, target_id)
。每当我想插入EntityLink
时,都会出现此运行时错误:SqlError {sqlState = "42703", sqlExecStatus = FatalError, sqlErrorMsg = "column \"id\" does not exist", sqlErrorDetail = "", sqlErrorHint = ""}
给定有效的
EntityLink
和sourceId
,这是在代码中插入targetId
的方法: insert $ EntityLink { entityLinkSourceId = sourceId
, entityLinkTargetId = targetId
}
如何禁用“持久性”类型中的
id
列的EntityLink
列? 最佳答案
您可以使用Primary
并指定属于主键的列。喜欢:
EntityLink sql=entity_links
sourceId EntityId
targetId EntityId
Primary sourceId targetId
deriving Show