ScalaQuery множественный первичный ключ и внешний ключ - PullRequest
8 голосов
/ 18 марта 2011

Как определить множественный первичный ключ и внешний ключ в 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
}

Итак, какой код использовать, если я хочу, чтобы pk1 и pk2 в myTable2 были первичным ключом, а fk1 вmyTable2 для ссылки на идентификатор в myTable1?

1 Ответ

8 голосов
/ 18 марта 2011

Следующее должно работать с главной веткой 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)
}

В то время как fk1 в myTable2 является базовым столбцом, fkMyTable1 является определением внешнего ключа, которое удваивается как соединение внешнего ключа.Внешние ключи доступны в ScalaQuery 0.9.1, явные первичные ключи (с именами и с поддержкой нескольких столбцов) доступны в master на данный момент и будут включены в 0.9.2.Вы можете найти больше примеров в классах модульного тестирования ForeignKeyTest и PrimaryKeyTest.

...