Subject | Triggers( after delete ) not working |
---|---|
Author | Arn |
Post date | 2004-04-27T19:54:32Z |
Hi All.
I have this trigger:
CREATE TRIGGER ASSUNZIONI_AIUD0 FOR ASSUNZIONI
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
declare data_assunzione date;
begin
-- select first date from a table
select first 1 data_assunzione from assunzioni
where coll_nominativo = new.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
-- write the date in another table
update personale set data_assunzione = :data_assunzione where mycode =
new.coll_nominativo;
/* coll_nominativo is the foreign key */
end
It works ONLY After Insert and after update.
In after DELETE it fails:
So I had change it into:
CREATE TRIGGER ASSUNZIONI_AIUD0 FOR ASSUNZIONI
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
declare data_assunzione date;
begin
if ( ( inserting ) or ( updating ) ) then begin /* 1 */
select first 1 data_assunzione from assunzioni
where coll_nominativo = new.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
--
update personale set data_assunzione = :data_assunzione where mycode =
new.coll_nominativo;
end /* 1 */
if ( deleting ) then begin /* 1 */
select first 1 data_assunzione from assunzioni
where coll_nominativo = old.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
--
update personale set data_assunzione = :data_assunzione where mycode =
old.coll_nominativo;
end /* 1 */
end
The last works fine.
I think there is a problem in.
Anyone has hints?
TIA
Ciao
Arnaldo
I have this trigger:
CREATE TRIGGER ASSUNZIONI_AIUD0 FOR ASSUNZIONI
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
declare data_assunzione date;
begin
-- select first date from a table
select first 1 data_assunzione from assunzioni
where coll_nominativo = new.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
-- write the date in another table
update personale set data_assunzione = :data_assunzione where mycode =
new.coll_nominativo;
/* coll_nominativo is the foreign key */
end
It works ONLY After Insert and after update.
In after DELETE it fails:
So I had change it into:
CREATE TRIGGER ASSUNZIONI_AIUD0 FOR ASSUNZIONI
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
declare data_assunzione date;
begin
if ( ( inserting ) or ( updating ) ) then begin /* 1 */
select first 1 data_assunzione from assunzioni
where coll_nominativo = new.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
--
update personale set data_assunzione = :data_assunzione where mycode =
new.coll_nominativo;
end /* 1 */
if ( deleting ) then begin /* 1 */
select first 1 data_assunzione from assunzioni
where coll_nominativo = old.coll_nominativo
order by data_assunzione desc
into :data_assunzione;
--
update personale set data_assunzione = :data_assunzione where mycode =
old.coll_nominativo;
end /* 1 */
end
The last works fine.
I think there is a problem in.
Anyone has hints?
TIA
Ciao
Arnaldo