繁体   English   中英

在Haskell / Persistent中使用没有ID列的SQL表

[英]Using an SQL table without an ID column in Haskell/Persistent

我想使用这个简化的模式使用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的方法,给出了有效的sourceIdtargetId

      insert $ EntityLink { entityLinkSourceId = sourceId
                          , entityLinkTargetId = targetId
                          }

如何在EntityLink类型的Persistent中禁用id列?

您可以使用Primary并指定属于主键的列。 喜欢:

EntityLink sql=entity_links
  sourceId EntityId
  targetId EntityId
  Primary sourceId targetId
  deriving Show

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM