【问题标题】:Mysql database error - deleting records by a join queryMysql数据库错误-通过连接查询删除记录
【发布时间】:2016-11-28 04:14:19
【问题描述】:

我正在尝试从 tbl_user 中删除单行并从 user_subscription_log 中删除多行,我的联接查询是:

DELETE tbl_user, user_subscription_log
FROM tbl_user 
INNER JOIN user_subscription_log ON tbl_user.id = user_subscription_log.user_id
WHERE tbl_user.id='256'

返回的错误是:

#1451 - 无法删除或更新父行:外键约束失败 (databasename.user_subscription_log, CONSTRAINT foreirgn_key_user_id FOREIGN KEY (user_id) REFERENCES tbl_user (id))

【问题讨论】:

    标签: mysql


    【解决方案1】:

    因为user_subscription_log 表中存在子记录,并且外键中没有设置“on delete”子句,所以失败了。

    我会执行两个删除查询:

    DELETE FROM user_subscription_log WHERE user_id = ?;
    
    DELETE FROM tbl_user where id = ?;
    

    另一种选择是在外键定义中设置“on delete cascade”子句,如here 所述。

    【讨论】:

    • 我会选择“另一种选择”
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 2014-07-15
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多