【发布时间】:2014-03-20 16:24:54
【问题描述】:
slick中,外键如何级联删除?有没有办法在架构级别指定这个,或者在查询后调用 delete 时这样做?
【问题讨论】:
slick中,外键如何级联删除?有没有办法在架构级别指定这个,或者在查询后调用 delete 时这样做?
【问题讨论】:
我更新了文档: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
}
【讨论】: