如何在Persistent中定义组合键

时间:2012-05-03 14:13:24

标签: haskell persistent yesod

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

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

CONSTRAINT pk_PersonID PRIMARY KEY (first_name,last_name)

谢谢,

2 个答案:

答案 0 :(得分:5)

您可以按照以下代码使用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

的其中一项测试

This wiki page解释了在持久性中定义模型的不同语法。它应该是Yesod书的一部分。

答案 1 :(得分:3)

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

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

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

相关问题