使用相关外键删除表中的重复行

时间:2019-03-21 22:49:44

标签: sql postgresql

以某种方式,我的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)

enter image description here

0 个答案:

没有答案