【问题标题】:Delete raises integrity error删除引发完整性错误
【发布时间】:2016-01-30 13:25:03
【问题描述】:

我有 2 张桌子:

  • UsersU_Id 作为主键
  • VotesV_author 引用 Users(U_Id) 作为外键

问题:如何从Users 表中删除行? 当我尝试这样做时,我收到以下错误。

错误:psycopg2.IntegrityError:更新或删除表“用户” 违反表 e 上的外键约束“votes_v_author_fkey” "votes" DETAIL: Key (u_id)=(7) 仍然从表中引用 “投票”。

【问题讨论】:

  • 原因是Database Referencial integrity。假设您有U_id 1 的用户,并使用Users 1 进行投票。如果您从Users 表中删除该用户(ID 为1),则使用Users 1 的投票变为无效,因为它引用了具有U_id 1 但该用户不存在。

标签: sql postgresql psycopg2


【解决方案1】:

如报错所述,Votes表中有一条记录,指的是Users表中即将删除的记录。您需要先从子表中删除记录:

DELETE FROM Votes WHERE v_author = 7

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多