Oracle PL SQL Каскадное удаление не работает? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть несколько таблиц с внешними ключами, которые следует удалить. Я помещаю «каскад удаления» везде, где мне это было нужно, но когда я пытаюсь удалить таблицу, я получаю следующую ошибку:

*Cause:    An attempt was made to drop a table with unique or
           primary keys referenced by foreign keys in another table.

Это таблица, которую я хочу удалить:

DROP TABLE Author;
CREATE TABLE Author (
    id NUMBER(4) NOT NULL,
    first_name VARCHAR2(30) NOT NULL,
    last_name VARCHAR2(30) NOT NULL,
    date_of_birth DATE NOT NULL,
    date_of_death DATE NULL,
    CONSTRAINT Author_PK PRIMARY KEY (id)
);

И эта таблица относится к таблице авторов:

CREATE TABLE Book (
    id NUMBER(4) NOT NULL,
    author NUMBER(4) NULL,
    title VARCHAR2(30) NOT NULL,
    ISBN VARCHAR2(13) NOT NULL,
    book_language VARCHAR2(2) NOT NULL,
    book_genre VARCHAR2(20) NOT NULL,
    CONSTRAINT Book_PK PRIMARY KEY (id),
    CONSTRAINT Book_Author FOREIGN KEY (author) REFERENCES Author(id) ON DELETE cascade
);

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Я решил это сейчас с помощью @a_horse_with_no_name. Если у вас возникла та же проблема, просто напишите

drop table table_name cascade constraints;

0 голосов
/ 24 апреля 2020

DROP - это DDL. Он не имеет ничего общего с DELETE (DML) (зависит от способа, которым вы создали ограничение внешнего ключа).

Сначала удалите дочернюю таблицу; затем оставь его родителя.

...