Использование таблицы SQL без столбца идентификатора в 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
в коде, указан действительный sourceId
а также targetId
:
insert $ EntityLink { entityLinkSourceId = sourceId
, entityLinkTargetId = targetId
}
Как я могу отключить id
столбец в постоянном для типа EntityLink
?
1 ответ
Решение
Ты можешь использовать Primary
и укажите столбцы, которые принадлежат первичному ключу. Подобно:
EntityLink sql=entity_links
sourceId EntityId
targetId EntityId
Primary sourceId targetId
deriving Show