В базе данных есть 2 таблицы, содержащие следующие столбцы:
department
таблица со столбцом dept_no
(char (4), не ноль) employee
таблица со столбцом dept_no
(char (4), null)
Столбец dept_no
должен быть определен как первичный ключ в таблице department
и внешний ключ вemployee
таблица с использованием триггера.
Я подумал, что это было правильное решение с использованием удаленных и вставленных виртуальных таблиц для обновления / удаления внешнего ключа в соответствующей таблице сотрудников:
CREATE TRIGGER trig_delete_dept_no
ON department
AFTER DELETE
AS
UPDATE employee
SET employee.dept_no = NULL
FROM deleted
WHERE employee.dept_no = deleted.dept_no
CREATE TRIGGER trig_update_dept_no
ON department
AFTER UPDATE
AS
UPDATE e
SET e.dept_no = i.dept_no
FROM employee e
INNER JOIN inserted i ON e.dept_no = i.dept_no
Однако, когда я обновляю строку отдела dept_no
на другое значение, я не вижу соответствующего обновления dept_no
в таблице сотрудников:
UPDATE department
SET dept_no = 'd4'
WHERE dept_no = 'd3'
Удаление функций, как ожидалось.Что я делаю не так с триггером обновления и как я могу объединить эти два триггера в один триггер?