我正在学习Haskell,我的第一个真正的应用程序是使用Yesod + Database.Persist和SQLite后端的Web应用程序,但我找不到用persistLowerCase
准引号指定一些东西的方法:
foreign_table_id ForeignTableId
,转换为"foreign_table_id" INTEGER NOT NULL REFERENCES "foreign_table"
)VARCHAR(50)
)CHAR
和BLOB
作为列类型最后两个对SQLite没有用,但我将来可能会改变数据库后端。
答案 0 :(得分:1)
如果我没记错的话(来自InfoQ的Yesod演示文稿),必须手动添加索引,Yesod不支持自动执行。
可以通过在字段定义中键入maxlen=<size>
来指定列大小。 BLOB
可以存储为ByteString
。两个字段的示例如下所示:
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Something
b ByteString
t Text maxlen=30
|]
BLOB
数据类型适用于Sqlite3,因为我过去曾使用过它,但我不确定maxlen
属性,我只是读过它。您可以在Yesod书籍chapter about Persistent中找到更多详细信息。
至于外键,我的经验告诉我那些是同义词。只是不要忘记启用外键,因为它们是disabled by default。