Как сделать каскад удаления с помощью SQL Developer в Oracle 11g? - PullRequest
2 голосов
/ 22 октября 2010

Я пытаюсь удалить запись из одной таблицы в моей базе данных, но в другой таблице есть ссылки на эту строку (внешние ключи). Поэтому я хочу сделать каскад удаления, используя SQL Developer в Oracle 11g . Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2016

Чтобы ответить на технический вопрос ОП: В SQL Developer вы редактируете (дочернюю) таблицу со ссылкой на внешний ключ. Выберите «Ограничения» в древовидном представлении слева, а затем выберите соответствующий внешний ключ. В форме «Ссылочное ограничение» есть выпадающий список «При удалении». Из этого выпадающего списка выберите «Каскад».

2 голосов
/ 23 октября 2010

Если вы пытаетесь удалить строки в (родительской) таблице, а другие (дочерние) таблицы имеют ссылки на внешний ключ, то это вызовет

ORA-02292: integrity constraint (XXXXXX) violated.

Чтобы удалить все дочерние строки при удалении родительской записи, необходимо указать параметр «ON DELETE CASCADE».

CREATE TABLE Dept_tab (
    Deptno  NUMBER(3) CONSTRAINT Dept_pkey PRIMARY KEY, 
    Dname   VARCHAR2(15), 
    Loc     VARCHAR2(15), 
                CONSTRAINT Dname_ukey UNIQUE (Dname, Loc), 
                CONSTRAINT Loc_check1 
                    CHECK (loc IN ('NEW YORK', 'BOSTON', 'CHICAGO')));

CREATE TABLE Emp_tab ( 
    Empno    NUMBER(5) CONSTRAINT Emp_pkey PRIMARY KEY, 
    Ename    VARCHAR2(15) NOT NULL, 
    Job      VARCHAR2(10), 
    Mgr      NUMBER(5) CONSTRAINT Mgr_fkey REFERENCES Emp_tab,
    Hiredate DATE, 
    Sal      NUMBER(7,2), 
    Comm     NUMBER(5,2), 
    Deptno   NUMBER(3) NOT NULL 
             CONSTRAINT dept_fkey REFERENCES Dept_tab ON DELETE CASCADE);

В этом случае, если строка из таблицы отделов будет удалена, вместо выдачи ошибки, которая является случаем по умолчанию, будут удалены все сотрудники из таблицы сотрудников.

Это не имеет ничего общего с инструментом (SQL Developer) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...