如何在光滑级联(postgreSQL)中删除表?

时间:2016-06-24 08:48:25

标签: postgresql scala foreign-keys slick cascade

我正在使用PostgreSQL。我需要删除表级联,这是一个来自Scala-Forklift的代码片段我需要覆盖它以便删除表,尽管未知的外键:

override def reset = {
val drop = MTable.getTables(None, None, None, None).flatMap { s =>
  DBIO.sequence(s filter { t =>
      t.tableType != null && t.tableType.toLowerCase == "table"
    } map { t =>
      TableQuery(new DummyTable(_, t.name.name)).schema.drop
    })
  }
  val f = db.run(drop)
  Await.result(f, Duration.Inf)
}

但我不知道怎么做。这个光滑的架构有可能吗?如果没有,请举例说明如何使用此方法中集成的SQL对“MTable”中的所有表进行操作?

非常感谢你!

1 个答案:

答案 0 :(得分:2)

您是否尝试使用外键声明架构如下:

def aFK = foreignKey("artistid", artistFacebookId, artists)(_.facebookId, onDelete = ForeignKeyAction.Cascade)

您还需要在PostgreSQL架构定义中修改它:

artistId     VARCHAR REFERENCES artists(facebookId) ON DELETE CASCADE,