Реализация триггера Oracle
Я должен реализовать триггер, который бы:
7) Покажите DDL, как можно использовать триггер для передачи всех арендных копий из удаляемого хранилища из информационной таблицы хранилища в центральное хранилище.
8) Покажите, как можно расширить этот триггер, чтобы центральное хранилище никогда не удалялось из базы данных.
Пока я сделал это:
СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ТРИГГЕР магазины
ДО УДАЛЕНИЯ НА МАГАЗИНАХ
ДЛЯ КАЖДОГО РЯДА
НАЧАТЬ
ЕСЛИ УДАЛИТЬ, ГДЕ Cvr = 123456789 ТО
Raise_Application_Error (
число => -20050,
msg => 'Вы не можете удалить Main Store.');
END IF;
ЕСЛИ УДАЛИТЬ ТОГДА
ОБНОВЛЕНИЕ store_id=123456789 В фильмах ГДЕ isActive = 0
END IF;
КОНЕЦ;
так что основное хранилище с cvr, которое написано, но это дает мне ошибку компиляции. Любая помощь? Заранее спасибо.
1 ответ
У вас есть две ошибки в вашем коде.
нет выражения "УДАЛИТЬ ГДЕ", вы должны использовать два логических исключения, например:
ЕСЛИ УДАЛИТЬ И:old.cvr = 123456789 ТО...
:old.cvr
ссылается на значение столбца cvr в удаленной записи
Синтаксис предложения UPDATE:
ОБНОВЛЕНИЕ table_name SET SET column_name1 = value1, column_name1 = value2 WHERE where_clause;
в вашем случае, наверное, что-то вроде этого:
UPDATE movies
set store_id = 123456789
WHERE store_id = :old.cvr
Я думаю, я не знаю требуемой функциональности