【发布时间】:2020-05-07 21:15:22
【问题描述】:
在我的 Postgresql 中,我有一个主表 TABLE_MAIN 包含 10 列,其中 7 列是其他 7 个表的主键的外键。
现在,在其中一个表(不是 TABLE_MAIN)中,我们将其称为 child_table,每当我点击 UI 中的 Refresh 按钮时,我我正在使用以下 Django ORM 查询清空 child_table 中的所有数据,然后插入相关数据。
child_table.objects.all().delete()
我在 TABLE_MAIN 中有很多重要数据,大约 1000 行,令我震惊的是,每当我点击 UI 中的刷新按钮时(删除了 child_table 中的所有数据strong>) 我发现 TABLE_MAIN 数据完全消失了。
这里发生了什么?是因为外键依赖吗?
其他child_tables数据是完全安全的,但是TABLE_MAIN数据丢失了。
删除 child_table 中的一个主键,它是 TABLE_MAIN 字段的外键,会影响丢失 TABLE_MAIN 中的所有数据吗?
【问题讨论】:
-
你的模型是怎么写的?您能否向我们展示您的部分代码,其中显示了这些外键声明?
-
听起来你的外键约束是倒退的。
-
@BernardoDuarte ,所有外键格式如下“models.ForeignKey(table, on_delete=models.CASCADE, null=True)”
-
@MikeSherrill'CatRecall' ,你所说的向后是什么意思?...我说 TABLE_MAIN 中的一列是 child_table 的外键(默认情况下它映射到这个子表的主表)
标签: django database postgresql foreign-keys rdbms