Re: Funktion if update(Spalte) im Trigger???
- From: "Heiko Brandes" <no@xxxxxxxxx>
- Date: Mon, 20 Aug 2007 12:58:02 +0200
Hallo Antje
versuch mal folgendes in einem Update-Trigger:
IF UPDATE(Status)
INSERT INTO Historie(TabId,Status)
SELECT d.TabId,d.Status
FROM deleted d INNER JOIN inserted i ON
d.TabId = i.TabID
WHERE d.TabId IN (SELECT d.TabId
FROM deleted d INNER JOIN inserted i ON
d.TabId = i.TabId
WHERE d.Status <> i.Status)
Hier sollten nur die tatsächlich geänderten Stati protokolliert werden.
Benutzername und Datum kannst du automatisch über Standardwerte mit in die
Historie schreiben.
HTH
Heiko
"Antje Kaiser" <AntjeKaiser@xxxxxxxxxxxxxxxxxxxxxxxxx> schrieb im
Newsbeitrag news:151E4722-9BAC-4D44-AA01-70483A18BFE9@xxxxxxxxxxxxxxxx
Hallo zusammen,wenn
ursprünglich hatte ich folgende Zielstellung:
In einer Tabelle gibt es eine Spalte Status und wenn diese geändert wird,
dann soll in einer Historientabelle der alte Status mit Datum und Benutzer
gespeichert werden, so daß eine Statushistorie entsteht.
Nun dachte ich eigentlich ich hätte die Trigger- samt inserted und
deleted-Tabellen-Philosophie ganz gut verstanden. Nach der, so meinte ich,
kann in der Spalte Status der Tabelle inserted nur etwas enthalten sein,
diese geändert wurde, also im Update etwas neues hinzugefügt wurde. Demnull)
scheint aber nicht so zu sein.
Auf diese Weise, dachte ich, müßte folgender Code im Update-Trigger einer
Tabelle in der Historientabelle nur Wirkung zeigen, wenn auch der Status
geändert wurde.
-- hier gehe ich davon aus, daß eventuell mehrere Zeilen geupdatet werden
können, aber maximal eine Zeile sich im Status ändert
if (select count(*) from inserted where not Status is null) = 1
begin
set @id = (select PA_ID from inserted where not PA_Status is null)
set @attrid = (select PA_Status from inserted where not PA_Status is
exec usp_SchreibeinHistorie @id, @attridweiß
end
Mache ich nun aber ein update in einer anderen Spalte der Tabelle schreibt
er mir sofort eine Historienzeile. Es geht also nicht.
Nun hab ich in der Hilfe sowas wie if update(Spaltenname) gefunden, und
jetzt nicht recht, auf welche Zeilen (falls es mehrere in der Tabelle
inserted sind) sich dessen Ergebnis bezieht. Kann mir das jemand erklären
oder hat noch jemand eine ganz andere tolle Idee wie ich zu einer Lösung
kommen kann.
Danke im voraus,
--
Gruß
Antje
.
- Prev by Date: Re: Funktion if update(Spalte) im Trigger???
- Next by Date: Re: LOG-File zu groß - Größe begrenzen?
- Previous by thread: Re: Funktion if update(Spalte) im Trigger???
- Next by thread: Re: LOG-File zu groß - Größe begrenzen?
- Index(es):
Relevant Pages
|
Loading