【发布时间】:2020-02-07 23:33:47
【问题描述】:
我有一个应用程序,它在一个大型 Django 应用程序和一组微服务器(用 Go 编写)之间共享一个数据库。如果一条记录被微服务器删除,使得不同表中的记录具有引用它的外键,并且如果我在相应的ForeignKey 字段中指定了on_delete=models.CASCADE,以下哪项是正确的?
- 依赖记录将被 PostgreSQL 删除,或者
- 应该由微服务器“手动”删除相关记录(这是我目前所做的),
或者有没有办法指定我希望如何处理on_delete?
这里有一个完整的例子:
from django.contrib.gis.db import models
class Parent(models.Model):
name = models.CharField(max_length=128)
class Child(models.Model):
name = models.CharField(max_length=128)
parent = models.ForeignKey(
Parent,
null=False,
on_delete=models.CASCADE)
在 Go 中:
_, err = db.Exec(`DELETE FROM module_parent WHERE ID = $1`, parentID)
或者我必须这样做:
_, err = db.EXEC(`DELETE FROM module_child WHERE parent_id = $1`, parentID)
...
_ err = db.EXEC(`DELETE FROM module_parent WHERE id = $1`, parentID
【问题讨论】:
标签: django postgresql foreign-keys