[SQL] Wijzigingen op 1 record in aparte tabel opslaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pizzaboertje
  • Registratie: Juni 2004
  • Laatst online: 18:16
Ik heb geen idee of hetgeen ik wil ook mogelijk is. Ik zoek hier geen passend antwoord, hoop wel dat iemand mij in de juiste richting kan sturen.

Situatie
We hebben een tabel met daarin altijd maar 1 record. In deze tabel staan ongeveer 30 kolommen. De waarde van deze 30 kolommen staan dus allemaal in record 1.

Wat ik graag wil?
Dat alle wijzigingen naar een nieuwe tabel (is al aangemaakt) worden gestuurd met daarbij de datum, kolomnaam en de nieuwe waarde.

Voorbeeld
Tabel 1 record 1

Kolom 1Kolom2Kolom 3Kolom 4
1005002500900


Hierbij pas ik de waarde van kolom 3 aan naar 2650 en de waarde van kolom 4 naar 750. Dan zou ik graag onderstaand resultaat willen hebben in een andere tabel.

DatumKolomNieuwe waardeOude waarde
01-10-2011Kolom 326502500
01-10-2011Kolom 4750900


Weet iemand of dit mogelijk is. Zoja, waar kan ik dan het beste naar zoeken? Tabellen zijn er allemaal al. Waar ik naar op zoek ben is enkel een manier om wijzigingen op te slaan in een andere tabel. Volgens mij moet ik iets gaan doen met SP's en triggers.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt dit inderdaad met Triggers oplossen, sp's zijn niet nodig. Als je daar wat meer over leest in combinatie met jouw database moet je er wel uitkomen. Als je uit een specifiek probleem niet komt kun je natuurlijk altijd een concretere vraag plaatsen.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Je kan het in een trieer regelen, maar dan zou ik opzich het resultaat opslaan naar een identieke tabel.met enkel een datum veld erbij.

Het opsplitsen naar je nieuwe / oude waarde tabel zou ik persoonlijk periodiek doen (sp die 1x per dag draait oid).
Die trigger wil je namelijk zo simpel mogelijk houden, hij wordt namelijk bij elke wijziging aangeroepen

Acties:
  • 0 Henk 'm!

  • pizzaboertje
  • Registratie: Juni 2004
  • Laatst online: 18:16
Gomez12 schreef op zaterdag 01 oktober 2011 @ 10:19:
Je kan het in een trieer regelen, maar dan zou ik opzich het resultaat opslaan naar een identieke tabel.met enkel een datum veld erbij.

Het opsplitsen naar je nieuwe / oude waarde tabel zou ik persoonlijk periodiek doen (sp die 1x per dag draait oid).
Die trigger wil je namelijk zo simpel mogelijk houden, hij wordt namelijk bij elke wijziging aangeroepen
Misschien is het goed om erbij te vermelden dat de waarden in het enige record in de tabel maximaal 1x per week plaatsvind. Onderstaand een overzicht van het record.

Afbeeldingslocatie: http://www.krt.nl/PublishingImages/Untitled.png

De reden waarom ik graag zou willen dat ik per wijziging een nieuw record krijg in een aparte tabel is omdat ik op twitter een bericht wil plaatsen in de vorm van:

De prijs van [KolomNaam] is gewijzigd van 1,65 naar 1,75.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
pizzaboertje schreef op zaterdag 01 oktober 2011 @ 10:37:
De prijs van [KolomNaam] is gewijzigd van 1,65 naar 1,75.
Dat is met het datamodel van Gomez nog steeds een triviale opdracht.

Ik zou zelf de keuze baseren op hoeveel wijzigingen er tegelijk plaatsvinden. Als er meer dan 1 kolom per actie gewijzigd wordt, zou ik liever in 1x een kopie opslaan, omdat je met 2 rows volgens het datamodel uit de topicstart zou kunnen denken dat object nog kort gedeeltelijk veranderd was.

Overigens, maar dat is puur gokwerk: Als je het liever 1 row per kolom wilt loggen, weet je dan wel zeker dat je originele tabel niet gewoon uit meerdere rows moet bestaan? B)

{signature}


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Waarom bevat de 1e tabel trouwens 30 kolommen terwijl je enkel de wijzigingen per kolom wilt hebben?

Ik vind het een beetje apart dat je wijzigingen anders wilt zien dan het origineel, je zit nu "complexe" handelingen te verrichten om het te doen en als je iets terug wilt zetten dan mag je weer een "complexe" actie gaan doen.

Ik zou dan eerder gaan nadenken of je originele tabel niet anders opgezet moet worden.
Pagina: 1