-- 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
);
-- 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);
INSERT INTO dyuldin_m_employees VALUES (3, 'Ava', 'Sales', 1);
-- 4. Исправленный триггер
CREATE OR REPLACE TRIGGER dyuldin_m_trigger
BEFORE DELETE ON dyuldin_m_employees
FOR EACH ROW
BEGIN
INSERT INTO dyuldin_m (empno, ename)
SELECT empId, name
FROM dyuldin_m_employees
WHERE mgr = :OLD.empId;
END dyuldin_m_trigger;
/ -- Символ "/" обязателен для завершения создания триггера
-- 5. Тестируем триггер
DELETE FROM dyuldin_m_employees WHERE empId = 1;
-- 6. Проверяем результат
SELECT * FROM dyuldin_m;