【发布时间】:2017-10-24 22:31:39
【问题描述】:
这些是我的桌子:
CREATE TABLE COACH (
COACH_ID VARCHAR(8),
COACH_NAME VARCHAR(50),
COACH_ADD VARCHAR(100),
COACH_PHONENO CHAR(12),
PRIMARY KEY (COACH_ID));
CREATE TABLE TEAM (
TEAM_ID VARCHAR(8),
COACH_ID VARCHAR(8),
TEAM_NAME VARCHAR(50),
TEAM_COLOUR VARCHAR(10),
PRIMARY KEY (TEAM_ID),
CONSTRAINT TEAM_COACH_ID_FK
FOREIGN KEY (COACH_ID) REFERENCES COACH);
CREATE TABLE PARTICIPANT (
PART_ID VARCHAR(8),
TEAM_ID VARCHAR(8),
SPORT_NAME VARCHAR(15),
PART_NAME VARCHAR(50),
PART_IC VARCHAR(14),
PART_PHONENO CHAR(12),
PRIMARY KEY (PART_ID),
CONSTRAINT SPORT_TEAM_ID_FK
FOREIGN KEY (SPORT_NAME) REFERENCES SPORT,
CONSTRAINT TEAM_TEAM_ID_FK
FOREIGN KEY (TEAM_ID) REFERENCES TEAM );
这是我的 SQL:
DELETE FROM TEAM
WHERE TEAM_COLOUR='Magenta';
代码产生了这个错误:
错误报告:
SQL 错误:ORA-02292:违反完整性约束 (HR.TEAM_TEAM_ID_FK) - 找到子记录
02292. 00000 - “违反完整性约束 (%s.%s) - 找到子记录”
*原因:试图删除具有外部依赖关系的父键值。 *操作:先删除依赖项,然后删除父项或禁用约束。
我想DELETE TEAM_COLOUR = 'MAGENTA'
【问题讨论】:
-
然后,首先从参与者中删除团队中所有首先具有 team_color magenta 的参与者。或者启用级联删除。
-
我可以在单个查询中做到这一点吗?
-
不。您首先必须通过更改 DDL 来启用级联删除,然后再删除,否则您必须运行两个删除语句。
-
如何启用级联删除?
-
参见此处:stackoverflow.com/questions/1571581/… 您必须先删除现有约束,然后在启用级联删除的情况下将其添加回来。
标签: sql