Laden...

Datensatz bei Änderung per Trigger in Tabelle

Erstellt von Grimmbizkit vor 9 Jahren Letzter Beitrag vor 9 Jahren 661 Views
G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 9 Jahren
Datensatz bei Änderung per Trigger in Tabelle

verwendetes Datenbanksystem: MsSQL

Hallo Zusammen,

ich habe ein Problem, bzw weiß ich nicht wo/wie ich anfangen soll.

Ich habe einen MSSql-Server und mehrere Tabellen.
In den Tabellen habe ich immer eine Spalte (rowid -> uniqueidentifier) diese wird immer beim Insert automatisch gefüllt (newid()).
Da folgen weitere Felder (zb. Name, Plz usw...) diese können von Tabelle zu Tabelle unterschiedlich sein.

Nun möchte ich es eigentlich so haben (bei INSERT oder UPDATE) soll per Trigger die rowid + der Inhalt aller Felder in eine andere Tabelle geschrieben werden.

Diese Tabelle sollte so aussehen:


rowid -> uniqueidentifier
cmd   -> UPDATE, INSERT, DELETE
value -> Inhalt der Felder

Beim löschen würde nur die rowid reichen.

So nun ist mein Problem, wie ich das ganze anstelle. habe mal was von Serialisierung gehört bzw XML. Nur finde ich dazu nix, auch nicht bei Google. Oder ich weiß einfach nicht die entsprechenden Wörter um richtig zu suchen.

Hoffe ihr könnt mir da etwas unter die Arme greifen.

Gruß Simon

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Grimmbizkit,

wenn du nach "Trigger" und "MSSQL" suchst, solltest du fündig werden. Wieso willst du was serialisieren? Oder habe ich dein Problem nicht verstanden?

CREATE TRIGGER (Transact-SQL)

Gruss

Coffeebean

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 9 Jahren

Danke,

ich möchte halt den Inhalt alle Felder des Datensatz haben.
Dachte das geht per XML am einfachsten, oder liege ich da falsch?

Gruß Simon

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Grimmbizkit,

du willst, wenn jemand ein Update oder Delete auf der DB macht, das Ganze in eine andere Tabelle schreiben. Ich weiss nicht, wofür das gut sein soll (ausser Logging-Zwecke). Aber wieso willst du sie denn wieder als xml abspeichern um sie dann wieder in die DB zu schreiben? Mach einen Trigger, der auf die Aktionen hört und entsprechendes ausführt.

Wobei ich Trigger immer vermeide. Es passiert eben was auf der DB, was der Entwickler nicht sofort sieht. Ich würde über ein Repo beispielsweise die CRUD-Sachen bereitstellen und dann vom Code aus ausführen.

Gruss

Coffeebean

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 9 Jahren

Ja,
es soll eine Art Logging sein. Ich muss die Daten nicht zwingend als XML haben, ich würde sie gerne direkt in die andere Tabelle schreiben, nur da weiß ich halt nicht wie.

Ich habe es bisher nur hinbekommen, das wenn sind bei einem UPDATE eine Zeile ändert, das ich dann eine Zähler im gleichen Datensatz erhöhe.

CRUD-Sache??
Repo??

Sorry aber sagt mir gerade nicht viel 😦

Ich möchte das halt alles ohne C# machen. Rein im Sql-Server.

Gruß Simon

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Grimmbizkit,

Für logging Zwecke gibt es schon fertige und komplexe Frameworks (log4net, ELMAH, etc.) die dir das abnehmen. Wie gesagt, wenn du rein Logging-Sachen magst, ist das vielleicht besser.

Willst du die Sachen kopieren: Du hast sehr viele Stichworte bekommen. Wenn du eins nicht verstehst: Einfach mal googlen. Bringt mir u.a. folgenden Treffer:

SQL Server 2008 - On Insert/Update Trigger that copies values to another table?

Mit Code-Beispiel, was als Antowrt markiert ist. Hilft dir das?

Bitte zeige ein wenig Eigeninitiative.

Gruss

Coffeebean

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 9 Jahren

Danke, ich denke damit sollte ich was anfangen können

F
10.010 Beiträge seit 2004
vor 9 Jahren

Das hat nichts mit logging zu tun, das nennt sich AuditLog.