horst: trigger

Beitrag lesen

Hallo,

habe den Trigger jetzt hinbekommen und festgestellt:
das geht ja gar nicht...
ein trigger der auf ein insert reagiert und dann ein insert auf diese tabelle macht = super rekursion... :)

trotzdem danke

viele grüße
horst

Hallo, Horst,

also Deine Anforderung ist fuer mich auf den ersten Blick etwas esoterisch und ich kenne nur den MSSQL Server in verschiedenen Versionen, aber:
Was Du tun solltest ist natuerlich einen "Insert"-Trigger schreiben; die Syntax koennte beim gen. DB(M)S wie foilgt aussehen:

create trigger
 trg_selfhtml
on
 table_selfhtml
for insert -- for insert, update
as
 begin
 declare
  @x int,
  @y int,
  @z int
 set
  @x = (select y from Inserted)  -- Inserted ist eine "logische" Tabelle, die "insertede" Datensaetze enthaelt
 set
  @y = (select x from inserted)
 set
  @z = (select z from inserted)
 set
  @ID = (select [ID] from inserted)  -- Du solltest immer Eindeutigkeiten bilden, damit Datensaetze bearbeitet werden koennen. Ein DF "ID" benoegtigt "man" schon.
 update
  table_selfhtml
 set
  x = @x,
  y = @y,
  z = @z
 where
  ([ID] = @ID)
 end

ich habe eine Tabelle test mit den Spalten s1,s2,s3.
Jetzt möchte ich gerne einen Trigger schreiben der folgendes tut:
wenn z.B. die Werte (1,2,3) in die Tabelle geschreiben werden,
soll auch (vom Trigger ausgelöst) (2,1,3) in der Tabelle stehen.
Also soll jedesmal wenn x,y,z in die Tabelle geschrieben wird, auch
y,z,x reingeschrieben/überschrieben werden.

Du keonnetest bei komplexeren Operationen auch ("unter" MSSQL Server) in Triggern mit Transaktionen arbeiten (begin tran..commit tran..rollback tran).

Gruss,
Lude