2016-05-02 191 views
1

我有大量的油滑表的定義爲自定義字段類型

def id = column[Int]("ID", O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED") 

,我想知道的ID列是否有創建自定義IDPK類型的方式,會以某種方式「暗示」使用上面所示的各種選項,例如

case class IDPK(id: Int) extends AnyVal 

def id = column[IDPK]("ID") 
    // O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED" are all implied 

我知道我可以做沿着def makeIDPK = column[Int]("ID", .....)行一個方便的功能,但我的問題是關於一個類型是否可以製成暗示某些列的選項。

我注意到,如果我運行show create table <tablename>,有些選項我沒有明確說明,例如,非選項欄爲NOT NULL,選項欄爲DEFAULT NULL。因此,我希望得到「是」的答案,但在查看Slick文檔時,我無法找到類似的東西。

+0

'show create table'在這裏會引起誤解,因爲大多數數據庫都有默認的所有設置,即使Slick沒有,也會添加它們。 – jkinkead

回答

-1

您可以定義一個接收類型並創建列的函數。例如:

def makeColumn[T](name: String): Column[Int] = 
    column[Int](name, O.PrimaryKey, O.AutoInc, O DBType "INT UNSIGNED") 

def id = makeColumn("id") 
+1

這不正是OP說他們不是要求什麼? –

相關問題