以某种方式,我的PostgreSQL数据库中的一个表具有重复的每一行,因此每个id现在都有两行(主键-请参见下面的附加示例图像)。该表中的另一列FAN
是另一个表holdings
中的外键。当我尝试使用以下方法删除表surveys
中的重复项时:
DELETE
FROM
surveys a
USING surveys b
WHERE
a.id = b.id;
我得到了错误:
错误:表“调查”上的更新或删除违反 外键约束 holdings_FAN_id_ca1342a3_fk_surveys_id”上 表格“馆藏”
我尝试了this SO question的解决方案,但是输出只是一个空的id
列(没有行,没有值),原始的surveys
表未更改。我是SQL的新手,不完全了解这些命令中发生的事情,因此我可能错过了一些东西。
如何删除表格中的重复行?
使用PostgreSQL 9.6.10。表是使用Django模型创建的(示例代码基于注释添加):
class surveys(models.Model):
FAN = models.SlugField(max_length=100, blank=True, null=True)
class holdings(models.Model):
FAN = models.ForeignKey('surveys', on_delete=models.SET_NULL, blank=True, null=True)