如何使用 Yesod/Persistent 创建外键约束?

Posted

技术标签:

【中文标题】如何使用 Yesod/Persistent 创建外键约束?【英文标题】:How can I create a foreign key constraint using Yesod/Persistent? 【发布时间】:2014-06-23 14:54:41 【问题描述】:

有没有办法使用 Persistent 的模式语法和 Postgres 后端创建外键约束?还是我需要使用 SQL 手动执行此操作?具体来说,一个ON DELETE CASCADE 关系,这样当一个HackDay 被删除时,它的所有子Projects 都被删除:

HackDay
    title Text
    created UTCTime default=now()
    votingClosed Bool default=false
    deriving Show
Project
    hackday HackDayId
    title Text
    creators Text
    votes Int default=0
    created UTCTime default=now()
    deriving Show

【问题讨论】:

【参考方案1】:

Persistent 目前没有对触发器的任何内置支持,尽管这是我们一直想要添加的东西(只是缺乏人力)。现在,您必须手动添加触发器。

【讨论】:

以上是关于如何使用 Yesod/Persistent 创建外键约束?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Yesod / Persistent 中正确使用 runDB

如何使用 Yesod/Persistent 访问两个不同的数据库服务器?

Yesod Persistent - 如何将 Day 与 UTCTime 进行比较? (如何转换它们?)

Yesod/Persistent 实体派生 Show

Yesod/Persistent 字段与 Eq

了解 Yesod Persistent TH 生成的代码