aktuelles Datum über Trigger einfügen

26/10/2007 - 17:28 von Joachim Fingado | Report spam
Hallo,

ich will bei Update und Insert einen Trigger ausführen welcher in eine
Datumsspalte des neuen/geànderten Datensatzes das aktuelle Datum setzt
(Timestamp).
Schön wàre auch eine Spalte mit der Version (wird beim Update um 1
hochgezàhlt) und eine Spalte mit einem Änderungskennzeichen.
so hab ich angefangen ...
"CREATE TRIGGER T_Aktionen_ITrig ON dbo.Aktionen FOR INSERT AS
Select inserted.mytimestamp = getdate() ..."

Danke
 

Lesen sie die antworten

#1 Olaf Pietsch
26/10/2007 - 19:55 | Warnen spam
Hallo Joachim,

"Joachim Fingado" schrieb im
Newsbeitrag news:
ich will bei Update und Insert einen Trigger ausführen welcher in eine
Datumsspalte des neuen/geànderten Datensatzes das aktuelle Datum setzt
(Timestamp).
Schön wàre auch eine Spalte mit der Version (wird beim Update um 1
hochgezàhlt) und eine Spalte mit einem Änderungskennzeichen.
so hab ich angefangen ...
"CREATE TRIGGER T_Aktionen_ITrig ON dbo.Aktionen FOR INSERT AS
Select inserted.mytimestamp = getdate() ..."




in etwa:
CREATE TRIGGER ... ON .. FOR INSERT, UPDATE
AS
BEGIN

IF @@ROWCOUNT = 0 RETURN;

UPDATE deineTabelle
SET
Datum = getdate()
,Version = Version + 1
WHERE
deineTabelle.PK = (SELECT PK FROM inserted)
;
END

wobei PK die Primàrschlüsselspalte ist.

Am Rande: Eine TIMESTAMP-Spalte wird automatisch vom SQL Server aktualisiert
und hat nicht den Datentyp datetime sondern rowversion, diese kann nicht
mittels getdate() aktualisiert werden. Wenn man das aktuelle Datum im Satz
speichern muss, muss man eine eigne Spalte mit dem Datentyp datetime
anlegen.



Gruß Olaf
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Blog (http://www.sqlpass.de/PASSUserBlogs...x?BlogID=3)
Regionalgruppe Köln/Bonn/Düsseldorf
(http://www.sqlpass.de/Regionalgrupp...fault.aspx)

Ähnliche fragen