Avatar billede nicklasw Nybegynder
17. juni 2011 - 17:47 Der er 3 kommentarer og
1 løsning

få fat i ændringer

Hej eksperter.
Jeg står over følende problemstilling. Jeg har fået stille til opgave at lave en funktion på vores produkt (en web application skrevet i php), som skal logge alt der sker af ændringer i vores database.
Dvs. ved hver UPDATE, INSERT, DELETE. Dette skal logges til en tabel jeg forstiller mig ser således ud:

id---Tabel---user---row_id---date---old_value---new_value

Jeg har kigget på metoden at oprette en trigger der logger det. Problemet er bare at kolonnen user ikke skal indeholde brugernavnet på mssql brugeren men brugeren på vores produkt, som ligger i en tabel for sig.

Jeg har overvejet om det var muligt at sende en form for virtuelt statement til sql serveren, således at serveren ikke ændre noget men bare retunere hvad ændringerne ville være. er det muligt?
Hvis det er, ville jeg nemlig kunne skrive en funktion i vores database objekt, som køres ved hvert statement og som gjorde dette, loggede det og tjekkede hvem der er logget ind i vores system.

eller har i andre idéer?
Jeg er helt åben ;)

Tak på forhånd.

Mvh.
Nicklas Warming Jacobsen
Avatar billede arne_v Ekspert
17. juni 2011 - 18:19 #1
Problemet er at i:

browser----PHP web app----SQLServer DB

vil du have SQLServer DB til at gemme et brugernavn som kun kendes i PHP web app.

Det kan kun lade sig goere hvis PHP web app sender det brugernavn over til SQLServer.

Hvilket begynder at ligne brug af stored procedure.

Det med at checke hvem der er logget ind lyder ikke brugbart. Det virker ikke hvis der er flere logget ind samtidigt.
Avatar billede nicklasw Nybegynder
17. juni 2011 - 19:01 #2
Det var også det jeg mente...
Jeg er klar over at det ikke kan lade sig gøre at lave dette udelukkende på SQL serveren.

Jeg er bare ikke så interesseret i at lave en custom logging for hvert sted i koden hvor vi sender noget til databasen. Så tænkte om det var muligt at lave det mere generisk.

Hvordan vil du bruge stored procedure?
Avatar billede arne_v Ekspert
17. juni 2011 - 19:45 #3
En SP vil kraeve aendring alle de steder hvor DB opdateres.

Det rigtige brugernavn sendes saa over som en parameter sammen med resten af input.

Logikken er simpel:

SELECT gammel vaerdir
UPDATE ny vaerdi
INSERT nrugernavn, gammel varedi og ny vaerdi i log tabel
Avatar billede arne_v Ekspert
08. august 2011 - 01:04 #4
OK?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester