如何在 Oracle SQL 中删除外键约束为 JDBC 的 2 个表

How to delete in Oracle SQL from 2 tables where foreign key constraint by JDBC

基本上,我需要知道 SQL 查询才能执行 JDBC 编码。我使用以下查询创建了 table:

CREATE TABLE MASTER 
(
    ROOM_ID NUMBER NOT NULL PRIMARY KEY,
    MARKET VARCHAR2(3 CHAR)  NOT NULL,
    MODIFIED_DATE DATE,
    MODIFIED_BY VARCHAR2(60 CHAR)
);

CREATE TABLE FEATURES
(
    MASTER_ROOM_ID NUMBER NOT NULL,
    ELEMENT NUMBER NOT NULL,
    MODIFIED_DATE DATE,
    MODIFIED_BY VARCHAR2(60 CHAR),

    CONSTRAINT FK_MASTER_FEATURES 
        FOREIGN KEY (MASTER_ROOM_ID) REFERENCES MASTER (ROOM_ID)  
                ON DELETE CASCADE
);

然后尝试删除为:

DELETE MASTER FEATURES 
JOIN FEATURES ON room_id = master_room_id 
WHERE room_id = master_room_id;

这不是一个有效的查询。怎么做?

更新问题:它正在删除级联。当我删除为 delete from master where market = 'xxx'; 时,它只会删除主 table 行。不是来自功能。有人评论说我必须先从功能 table 中删除。但问题是我真的不能先从功能 table 中删除。我想按市场删除。我对于功能 table 我只知道 MASTER_ROOM_ID,它是功能 table 的外键。那么我如何编写查询以先从特征 table 中删除呢?请告诉我怎么做?

如果 FK 确实是使用 ON DELETE CASCADE 创建的,那么从 MASTER 中删除 将从特征中删除 table demo here

如果 FK 不是使用 ON DELETE CASCADE 创建的,那么只要至少有一个功能引用它,主控上的删除就会失败 demo here

在这种情况下,您需要先使用子查询从 features 中删除以找到正确的行:

delete from features
where master_room_id in (select room_id
                         from master
                         where marked = 'm1');

然后就可以从master上删除了table:

delete from master
where marked = 'm1';

Demo here