ScalaQuery 多主键&外键
我们如何在 ScalaQuery 中定义多个主键和一个外键?
object myTable1 extends Table([Int])("myTable1") {
def id = column[Int]("id", O PrimaryKey)
def * = id
}
object myTable2 extends Table([Int, Int, Int])("myTable2") {
def pk1 = column[Int]("id1")
def pk2 = column[Int]("id2")
def fk1 = column[Int]("fk1")
def * = pk1 ~ pk2 ~ fk1
}
那么,如果我希望 myTable2 中的 pk1 和 pk2 作为主键,并让 myTable2 中的 fk1 引用 myTable1 中的 id,那么要使用什么代码呢?
How do we define a multiple primary key and a foreign key in ScalaQuery?
object myTable1 extends Table([Int])("myTable1") {
def id = column[Int]("id", O PrimaryKey)
def * = id
}
object myTable2 extends Table([Int, Int, Int])("myTable2") {
def pk1 = column[Int]("id1")
def pk2 = column[Int]("id2")
def fk1 = column[Int]("fk1")
def * = pk1 ~ pk2 ~ fk1
}
So what is the code to use if I want pk1 and pk2 in myTable2 to be the primary key and fk1 in myTable2 to refer to id in myTable1?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下内容应该适用于 ScalaQuery 主分支:
虽然 myTable2 中的 fk1 是基础列,但 fkMyTable1 是外键定义,它兼作外键上的联接。外键在 ScalaQuery 0.9.1 中可用,显式主键(带有名称并支持多列)目前在 master 中可用,并将包含在 0.9.2 中。您可以在单元测试类ForeignKeyTest 和PrimaryKeyTest 中找到更多示例。
The following should work against the ScalaQuery master branch:
While fk1 in myTable2 is the underlying column, fkMyTable1 is the foreign key definition which doubles as a join on the foreign key. Foreign keys are available in ScalaQuery 0.9.1, explicit primary keys (with names and with support for multiple columns) are available in master at the moment and will be included in 0.9.2. You can find more examples in the unit test classes ForeignKeyTest and PrimaryKeyTest.