Sql 使用Scalaquery测试表/视图是否存在&如果不存在,则创建
我正在编写一些测试来自动检查数据库是否是MS SQL 服务器实例具有某些视图,如果没有,则创建这些视图 使用BasicTable对象的视图。 比如:Sql 使用Scalaquery测试表/视图是否存在&如果不存在,则创建,sql,scala,scalaquery,Sql,Scala,Scalaquery,我正在编写一些测试来自动检查数据库是否是MS SQL 服务器实例具有某些视图,如果没有,则创建这些视图 使用BasicTable对象的视图。 比如: @Test def CheckAndBuildViewsOnDB() = { VerifyViewExists(FooTable, BarTable) //FooTable et al defined as: FooTable extends BasicTable[Foo], where Foo is a case class &a
@Test def CheckAndBuildViewsOnDB() = {
VerifyViewExists(FooTable, BarTable) //FooTable et al defined as:
FooTable extends BasicTable[Foo], where Foo is a case class & FooTable
has a DDL create defined.
}
基于这一点和cribing from,我提出了一个小方法来检查数据库中的视图,以及
check抛出一个异常调用,该调用包含视图的基本表ddl.create:
这对我来说似乎合理,但有两个问题:
这不是将views参数键入BasicTable的正确方法,
导致错误:类BasicTable接受类型参数
映射参数v的作用域发生了一些奇怪的事情,
导致错误:值tableName不是类型参数的成员
T0。
请原谅我对这个问题的无知,因为我怀疑
我的问题在于不理解Scala的类型系统。
伴随着这两个问题的是一种我没有经历过的烦人的感觉
真正完成的VerifyViewExists以最简洁或可读的样式存在。因为您不关心类型参数是什么,您应该能够通过添加[\uz]来解决1:
def VerifyViewExists(views:BasicTable[_]*) = {
我猜修复1会导致2消失
顺便说一句,编写foreach可能比映射更好,因为后者会将结果收集到一个新的集合中,我想这不是您想要的。是的,这就是我缺少的语法位。谢谢
def VerifyViewExists(views:BasicTable[_]*) = {