【问题标题】:Delete based on primary key from associative table - Error根据关联表中的主键删除 - 错误
【发布时间】:2018-03-08 00:58:18
【问题描述】:

我正在尝试根据 (3) 个表中的主键删除 1 条记录。

这是我正在使用的声明

DELETE FROM CUSTOMER
WHERE EXISTS
  ( SELECT MERCHANTNAME
    FROM CREDITCARD
    WHERE MERCHANTNAME = 'VISA');

从客户表中删除具有 VISA 的客户的记录。

这是我得到的错误

ORA-02292:完整性约束 (PLATINUMAUTOGROUP.CDRIVERLICENSENUM_FK) 违反 - 找到子记录

我猜CDRIVERLICENSENUM 是我拥有的第三张表中的外键。我该怎么做?是否可以在 1 个语句中从 3 个表中删除 1 条记录?

三个表是

customer / customer_creditcard / creditcard

【问题讨论】:

  • 研究使用ON DELETE CASCADE。如果这在这里不起作用(因为您的删除方向),那么您必须首先从错误中提到的表中删除。

标签: sql oracle sql-delete associative-table


【解决方案1】:

在删除主表中的记录之前,您需要先删除外部表中的记录。

但也许您在 CUSTOMER 表中的删除命令可能是错误的,因为如果 EXISTS 命令返回 true,所有记录将从 CUSTOMER 表中删除。检查这是否是您期望的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多