Значение
- A
BOOLEAN
в Oracle может иметь значения три : TRUE
, FALSE
и NULL
, переменная не инициализирована. - Вы должны обратиться к новым значениям (по умолчанию с
:new
) - По умолчанию триггер не может содержать
COMMIT
или ROLLBACK
Ваш код должен быть таким:
create trigger TriggerAdresse1
before INSERT
on Adresse
for each row
declare
enthaelt INTEGER;
begin
SELECT COUNT(*)
INTO enthaelt
FROM Provinz2
WHERE Name = :new.Provinz
AND Laendercode = :new.Laendercode;
if enthaelt = 0 then
RAISE_APPLICATION_ERROR(-20001, 'Provinz oder Ländercode ungültig');
end if;
end;
Однако ваше требование должно быть лучше реализовано с помощью FOREIGN KEY Constraint
alter table Adresse add constraint Provinz_FK FOREIGN KEY (Provinz)
references Provinz2 (Name);
alter table Adresse add constraint Laendercode_FK FOREIGN KEY (Laendercode)
references Provinz2(Laendercode);
Скорее всего Laendercode
не является УНИКАЛЬНЫМ ключом, но Name+Laendercode
является. Тогда было бы так:
alter table Adresse add constraint Provinz_FK FOREIGN KEY (Provinz, Laendercode)
references Provinz2 (Name, Laendercode);