Вставка триггера SQL orcl10g (deathDate after birthDate) - PullRequest
0 голосов
/ 18 февраля 2012

Триггер должен остановить дату смерти до ввода даты рождения.

CREATE TRIGGER Check_deathDate
BEFORE INSERT Or UPDATE of deathDate on Actor
FOR EACH ROW
DECLARE
deathDate           DATE;
birthDate           DATE;
deathDate_Error     EXCEPTION;
IF (deathDate < birthDate) THEN
RAISE deathDate_Error;
END IF;
EXCEPTION 
WHEN deathDate_Error THEN
Raise_application_error( 'deathDate' || 'should be before' || 'birthDate');
END;);

выдает ошибку ...

* ОШИБКА в строке 3: ORA-04079: неверная спецификация триггера

... как еще я могу указать IF?

Ответы [ 2 ]

5 голосов
/ 19 февраля 2012

Возможно, вы захотите использовать проверочное ограничение вместо триггера.Ограничения менее мощные, чем триггеры, но обычно они проще и быстрее.

alter table actor add
constraint actor_birth_before_death check (birthDate <= deathDate);
2 голосов
/ 19 февраля 2012

Примерно так:

CREATE TRIGGER Check_deathDate
BEFORE INSERT Or UPDATE of deathDate, birthDate on Actor
FOR EACH ROW
BEGIN
    IF (:NEW.deathDate < :NEW.birthDate) THEN
        Raise_application_error(-20000, 'deathDate should be before birthDate');
    END IF;
END;
/
...