ScalaQuery 多主键&外键

发布于 2024-10-23 20:41:09 字数 452 浏览 2 评论 0原文

我们如何在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长梦不多时 2024-10-30 20:41:09

以下内容应该适用于 ScalaQuery 主分支:

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
  def pk = primaryKey("pk_myTable2", pk1 ~ pk2)
  def fkMyTable1 = foreignKey("myTable1_fk", fk1, myTable1)(_.id)
}

虽然 myTable2 中的 fk1 是基础列,但 fkMyTable1 是外键定义,它兼作外键上的联接。外键在 ScalaQuery 0.9.1 中可用,显式主键(带有名称并支持多列)目前在 master 中可用,并将包含在 0.9.2 中。您可以在单元测试类ForeignKeyTest 和PrimaryKeyTest 中找到更多示例。

The following should work against the ScalaQuery master branch:

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
  def pk = primaryKey("pk_myTable2", pk1 ~ pk2)
  def fkMyTable1 = foreignKey("myTable1_fk", fk1, myTable1)(_.id)
}

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文