Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- 1. Создаем таблицу dyuldin_m_employees (если она не существует) CREATE TABLE dyuldin_m_employees ( empId NUMBER PRIMARY KEY, -- Номер сотрудника name VARCHAR2(15) NOT NULL, -- Фамилия dept VARCHAR2(10) NOT NULL, -- Отдел mgr NUMBER -- Начальник (ссылка на empId) ); -- 2. Создаем таблицу dyuldin_m для записи подчиненных CREATE TABLE dyuldin_m ( empno NUMBER, -- Номер подчиненного ename VARCHAR2(15) -- Фамилия подчиненного ); -- 3. Добавляем тестовые данные INSERT INTO dyuldin_m_employees VALUES (1, 'Clark', 'Sales', NULL); -- Руководитель INSERT INTO dyuldin_m_employees VALUES (2, 'Dave', 'Accounting', 1); -- Подчиненный Clark INSERT INTO dyuldin_m_employees VALUES (3, 'Ava', 'Sales', 1); -- Подчиненный Clark -- 4. Создаем триггер CREATE OR REPLACE TRIGGER dyuldin_m_trigger BEFORE DELETE ON dyuldin_m_employees -- Убедитесь, что таблица существует! FOR EACH ROW BEGIN -- Вставляем подчиненных в dyuldin_m INSERT INTO dyuldin_m (empno, ename) SELECT empId, name FROM dyuldin_m_employees WHERE mgr = :OLD.empId; -- Ищем подчиненных удаляемого сотрудника EXCEPTION WHEN OTHERS THEN RAISE; -- Для отладки: выводим ошибку END dyuldin_m_trigger; / -- Тестируем триггер DELETE FROM dyuldin_m_employees WHERE empId = 1; -- Удаляем Clark SELECT * FROM dyuldin_m; -- Результат: 2, Dave и 3, Ava

Stuck with a problem? Got Error? Ask AI support!

Copy Clear