13

如何向 Persistent 声明我有一个主键是两个字段组合的表?

例如,假设我有一个包含 first_name 和 last_name 的表,那么在 SQL 语法中,我需要类似:

CONSTRAINT pk_PersonID PRIMARY KEY (first_name,last_name)

谢谢,

4

2 回答 2

6

您可以Primary <field1> <field2>按照下面的代码使用语法。

PrimaryCompositeWithOtherNullableFields
    foo String       maxlen=20
    bar String       maxlen=20
    baz String Maybe
    Primary foo bar   -- THIS LINE --
    deriving Eq Show
    enter code here

上述代码取自https://github.com/yesodweb/persistent/blob/master/persistent-test/src/CompositeTest.hs#L74的一项测试

这个 wiki 页面解释了在持久化中定义模型的不同语法。它真的应该是 Yesod 书的一部分。

于 2016-11-02T05:20:35.467 回答
3

请参阅http://www.yesodweb.com/book/persistent,唯一性部分

Person
    firstName String
    lastName String
    age Int
    PersonName firstName lastName
    deriving Show

这定义了一个由 firstName 和 lastName 组成的唯一键。

于 2012-06-15T09:27:18.943 回答