8

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 を参照する場合に使用するコードは何ですか?

4

1 に答える 1

8

以下は、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 で、さらに多くの例を見つけることができます。

于 2011-03-18T16:59:31.667 に答える