Я пытался заставить этот триггер работать, но по какой-то причине он даже не активируется до того, как я обновлю / вставлю что-то в таблицу.Цель этого триггера (и я должен сделать это с помощью триггеров) состоит в том, чтобы гарантировать, что все записи в таблице DISCS имеют либо «L», либо «S» в атрибуте FORMAT.Если нет, запись не должна быть вставлена / обновлена.
Я попытался добавить строку, чтобы проверить, был ли активирован триггер вообще (строка «buenos dias»), но, похоже, это не так.т по какой-то причине.Я только начинающий с триггерами, и я уверен, что ошибка действительно глупая, но я просто не могу ее найти.
Код для триггера:
CREATE OR REPLACE TRIGGER FORMAT_T
BEFORE INSERT OR UPDATE OF FORMAT
ON DISCS
FOR EACH ROW
DECLARE
bad_format EXCEPTION;
BEGIN
DBMS_OUTPUT.PUT_LINE('Buenos dias.');
IF :NEW.FORMAT != 'S' AND :NEW.FORMAT != 'L' THEN
RAISE bad_format;
END IF;
EXCEPTION
WHEN bad_format THEN
DBMS_OUTPUT.PUT_LINE('Bad format, could not insert/update.');
END FORMAT_T;
Один разЯ скомпилирую триггер без проблем, я пытаюсь обновить следующую строку (используя ID первой строки, чтобы иметь возможность легко ее проверить):
UPDATE DISCS
SET FORMAT = 'W'
WHERE ID = 1;
Это должно вернуть ошибку, так как формат IЯ обновляю его не до «L» и не «S», а вместо этого строка просто обновляется без проблем и без всплывающей строки «buenos dias».В таблице user_errors также нет ошибок.
Заранее благодарю за помощь.