2011-03-18 4 views
8

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의 기본 키와 FK1이 myTable1에서 ID를 참조 할 수 myTable2에 PK1 및 PK2를 원하는 경우에 사용하는 코드는 무엇인가?

답변

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에서 사용할 수 있으며 명시 적 기본 키 (이름이 있고 여러 열을 지원함)는 현재 마스터에서 사용할 수 있으며 0.9.2에 포함됩니다. 단위 테스트 클래스 인 ForeignKeyTest와 PrimaryKeyTest에서 더 많은 예제를 찾을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 0.9.2가 출시 될시기에 대한 아이디어가 있습니까? ScalaQuery와 함께 SBT를 사용하고 있으므로 마스터 빌드를 사용하지 않을 생각입니다. – JohanSJA