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
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?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Das hat nichts mit logging zu tun, das nennt sich AuditLog.