Реализация триггера Oracle

Я должен реализовать триггер, который бы:

7) Покажите DDL, как можно использовать триггер для передачи всех арендных копий из удаляемого хранилища из информационной таблицы хранилища в центральное хранилище.
8) Покажите, как можно расширить этот триггер, чтобы центральное хранилище никогда не удалялось из базы данных.

Пока я сделал это:

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ТРИГГЕР магазины
ДО УДАЛЕНИЯ НА МАГАЗИНАХ
ДЛЯ КАЖДОГО РЯДА
НАЧАТЬ
ЕСЛИ УДАЛИТЬ, ГДЕ Cvr = 123456789 ТО

Raise_Application_Error (
число => -20050,
msg => 'Вы не можете удалить Main Store.');
END IF;
ЕСЛИ УДАЛИТЬ ТОГДА
ОБНОВЛЕНИЕ store_id=123456789 В фильмах ГДЕ isActive = 0
END IF;
КОНЕЦ;

так что основное хранилище с cvr, которое написано, но это дает мне ошибку компиляции. Любая помощь? Заранее спасибо.

1 ответ

Решение

У вас есть две ошибки в вашем коде.

  1. нет выражения "УДАЛИТЬ ГДЕ", вы должны использовать два логических исключения, например:

    ЕСЛИ УДАЛИТЬ И:old.cvr = 123456789 ТО...

:old.cvr ссылается на значение столбца cvr в удаленной записи

  1. Синтаксис предложения 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

Я думаю, я не знаю требуемой функциональности

Другие вопросы по тегам