2016-05-02 126 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说他们不是要求什么? –

相关问题