如何在光滑中对外键进行级联删除

Qia*_* Li 6 scala slick

slick,如何对外键进行级联删除?有没有办法在架构级别指定它,或者在查询后调用delete时执行此操作?

cvo*_*ogt 7

我更新了文档:https://github.com/slick/slick/pull/721/

可以使用Table的foreignKey方法定义外键约束.它首先采用约束,引用列和引用表的名称.第二个参数列表从引用的表到其引用的列以及onUpdate和onDelete的ForeignKeyAction获取一个函数,它们是可选的,默认为NoAction.为表创建DDL语句时,会向其添加外键定义.

class Coffees(tag: Tag) extends Table[(String, Int, Double, Int, Int)](tag, "COFFEES") {
  def supID = column[Int]("SUP_ID")
  //...
  def supplier = foreignKey("SUP_FK", supID, suppliers)(_.id, onUpdate=ForeignKeyAction.Restrict, onDelete=ForeignKeyAction.Cascade)
  // compiles to SQL:
  //   alter table "COFFEES" add constraint "SUP_FK" foreign key("SUP_ID")
  //     references "SUPPLIERS"("SUP_ID")
  //     on update RESTRICT on delete CASCADE
}
Run Code Online (Sandbox Code Playgroud)