2 つのトリガーがあります。
create or replace
TRIGGER bl_process_type_updated
before update
ON bl
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
:new.process_type := 'UPDATED';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
別のもの:
create or replace
TRIGGER bl_process_type_deleted
after insert or update
ON ot
FOR EACH ROW
DECLARE
building_id bl.bl_id%TYPE;
BEGIN
building_id := :new.bl_id ;
if(:new.status = 'Sold' or :new.status = 'LeaseTerminated') then
update bl set process_type='DELETED' where bl_id = building_id;
end if;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
bl
どちらのトリガーも、テーブルの process_type 列を更新します。テーブルを更新するot
と、bl
テーブルのトリガーが最後に起動するため、process_type の値は UPDATED になりますが、ot
テーブルが更新または挿入されると、ot
テーブルのトリガーが最後に起動し、process_type の値が DELETED になります。
どうすればそれを達成できますか?