物理外键与逻辑外键(on_delete方法)

发布时间 2023-11-24 09:08:15作者: wellplayed

外键中on_delete的方法:

CASCADE:级联删除,只要删除publish,跟publish关联的book,全都被删除
SET_DEFAULT:只要删除publish,跟publish关联的book,的publish字段会变成默认值,一定要配合default使用
SET_NULL:只要删除publish,跟publish关联的book,的publish字段会变成空,一定要配合null=True使用
models.SET(add):括号中可以放个值,也可以放个函数内存地址,只要删除publish,跟publish关联的book,的publish字段会变成set设的值或执行函数

逻辑外键创建方法:

publish = models.ForeignKey(to='Publish', on_delete=models.DO_NOTHING, null=True, db_constraint=False)
models.DO_NOTHING:什么都不做,但它需要跟db_constraint=False配合,表示不建立外键约束,创建逻辑外键,不是物理外键
不建立物理外键的好处?增删查改数据快
缺点:容易出现脏数据

  

实际工作中,都不建立物理外键,都是建立逻辑外键