如何向Persistent声明我有一个表,其主键是两个字段的组合?
例如,假设我有一个包含first_name和last_name的表,那么在SQL语法中我需要类似的东西:
CONSTRAINT pk_PersonID PRIMARY KEY (first_name,last_name)
谢谢,
答案 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组成的唯一键。