删除时的外键依赖项 table
Foreign Key dependencies While deleting table
在我的 Postgresql 中,我有一个主 table TABLE_MAIN 包含 10 列,其中 7 列是主键的外键其他 7 tables.
现在,在 table 之一( 而不是 TABLE_MAIN)中,我们称它为 child_table,每当我点击 UI 中的 Refresh 按钮时,我都会清空 child_table 中的所有数据下面的Django ORM查询,然后插入相关数据。
child_table.objects.all().delete()
我在 TABLE_MAIN 中有很多重要数据,大约 1000 行,令我震惊的是,每当我单击 UI 中的刷新按钮时(其中删除了child_table中的所有数据)我发现TABLE_MAIN数据完全没有了
这里发生了什么?是由于外键依赖吗?
和其他 child_table 的数据是完全安全的,但是 TABLE_MAIN 数据丢失了。
删除child_table中的一个主键,它是来自[=46的外键=]字段会影响丢失TABLE_MAIN?
中的所有数据
Django 的 ForeignKey 字段提供了一个特殊的选项 on_delete 让你指示 Django 在相关模型删除的情况下做什么。您可能将此值设置为 CASCADE ,这会在您从数据库中删除某个对象时删除所有包含 ForeignKey 的对象。如果您不想要这种行为,您应该考虑传递 PROTECT、SET_NULL、SET_DEFAULT 到 on_delete 外键字段中的选项。
在我的 Postgresql 中,我有一个主 table TABLE_MAIN 包含 10 列,其中 7 列是主键的外键其他 7 tables.
现在,在 table 之一( 而不是 TABLE_MAIN)中,我们称它为 child_table,每当我点击 UI 中的 Refresh 按钮时,我都会清空 child_table 中的所有数据下面的Django ORM查询,然后插入相关数据。
child_table.objects.all().delete()
我在 TABLE_MAIN 中有很多重要数据,大约 1000 行,令我震惊的是,每当我单击 UI 中的刷新按钮时(其中删除了child_table中的所有数据)我发现TABLE_MAIN数据完全没有了
这里发生了什么?是由于外键依赖吗?
和其他 child_table 的数据是完全安全的,但是 TABLE_MAIN 数据丢失了。
删除child_table中的一个主键,它是来自[=46的外键=]字段会影响丢失TABLE_MAIN?
中的所有数据Django 的 ForeignKey 字段提供了一个特殊的选项 on_delete 让你指示 Django 在相关模型删除的情况下做什么。您可能将此值设置为 CASCADE ,这会在您从数据库中删除某个对象时删除所有包含 ForeignKey 的对象。如果您不想要这种行为,您应该考虑传递 PROTECT、SET_NULL、SET_DEFAULT 到 on_delete 外键字段中的选项。