【问题标题】:Using an SQL table without an ID column in Haskell/Persistent在 Haskell/Persistent 中使用没有 ID 列的 SQL 表
【发布时间】:2018-02-02 05:08:53
【问题描述】:

我想使用带有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 = ""}

在给定有效的sourceIdtargetId 的情况下,我在代码中插入EntityLink 的方法如下:

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

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

【问题讨论】:

标签: sql haskell persistent haskell-persistent


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2020-03-17
    相关资源
    最近更新 更多