Hallo zusammen,
ich bin eingefleischter Oracler, mußte nun aber einen SQLServer Update Trigger bauen, der bei Update eines Feldes einer Tabelle den Datensatz wegspeichert. Anhand von Beispielen aus dem www habe ich folgendes zusammengestellt:
create trigger raf_upd_vhsm on vhsm
after update
as
set nocount on
-- Prüft ob flag überhaupt upgedatet wurde
if not update(flag)
RETURN
-- prüft ob mindestens 1 Satz dabei wo Flag von leer auf I gesetzt wurde
if EXISTS (select * from inserted i, deleted d
where i.codice = d.codice
and i.flag = 'I'
and IsNull(d.flag,'?') != 'I')
BEGIN
-- speichert jeden Satz weg wo Flag von leer auf I gesetzt wurde
insert into vhsm_raf
select i.* from inserted i, deleted d
where i.codice = d.codice
and i.flag = 'I'
and IsNull(d.flag,'?') != 'I'
END
Der Trigger funktioniert in dieser Form sowohl beim Update eines Satzes alsauch bei einem Multirecord-Update! Vielleicht könnt Ihr aber mal einen Blick draufwerfen, ob der Trigger so optimal (=effizient) ist, ob man was verbessern oder weglassen könnte.
Vielen Dank
Franz
ich bin eingefleischter Oracler, mußte nun aber einen SQLServer Update Trigger bauen, der bei Update eines Feldes einer Tabelle den Datensatz wegspeichert. Anhand von Beispielen aus dem www habe ich folgendes zusammengestellt:
create trigger raf_upd_vhsm on vhsm
after update
as
set nocount on
-- Prüft ob flag überhaupt upgedatet wurde
if not update(flag)
RETURN
-- prüft ob mindestens 1 Satz dabei wo Flag von leer auf I gesetzt wurde
if EXISTS (select * from inserted i, deleted d
where i.codice = d.codice
and i.flag = 'I'
and IsNull(d.flag,'?') != 'I')
BEGIN
-- speichert jeden Satz weg wo Flag von leer auf I gesetzt wurde
insert into vhsm_raf
select i.* from inserted i, deleted d
where i.codice = d.codice
and i.flag = 'I'
and IsNull(d.flag,'?') != 'I'
END
Der Trigger funktioniert in dieser Form sowohl beim Update eines Satzes alsauch bei einem Multirecord-Update! Vielleicht könnt Ihr aber mal einen Blick draufwerfen, ob der Trigger so optimal (=effizient) ist, ob man was verbessern oder weglassen könnte.
Vielen Dank
Franz
Comment