[ sule99 @ 14.06.2011. 15:14 ] @
Imam tablicu od nekih 150 kolona (ne pitajte zašto, obrazac je nekakav i tako mora da bude). Administrator ima mogućnost mjenjati podatke iz spomenute tablice. Ja bih napravio trigger koji bi hvatao DELETE i UPDATE nad tom tablicom i stare vrijednosti bi spremao u neku history tablicu (to bi napravio sa deleted i inserted naredbama).

Sada trebam vašu pomoć.

Update i brisanje podataka su rijetki pa ne bi kreirao istu tablicu kao i originalnu (sa 150 kolona). Nad history podacima neće biti pretraživanja!

Zanima me kako bi vi to najbolje riješili? Kako bi izgledala ta history tablica, a da bude jednostavna?

radi se o SQL 2005...
[ deerbeer @ 14.06.2011. 15:51 ] @
Najbolja bi bila varijanta da kroz triger dobijes informaciju koje polje je apdejtovano
i da staru vrednost upises u tabelu sa poljima (ime_polja (varchar) , vrednost(varchar) , datum_izmene(datetime) , user(varchar) , akcija (brisanje ili update) ).
Ako se pak radi o deletu onda sva polja obrisanog rekorda upises u tu tabelu sa flagom akcija = 'brisanje' .

[ nadavesela @ 15.06.2011. 09:49 ] @
kao dopuna, osim polja koje je promenjeno, bitno je evidentirati i koji red je promenjen (ili zapisati primarni kljuc reda cije se kolone menjaju)
[ Zidar @ 15.06.2011. 16:06 ] @
MOzda ovo pomogne: http://www.nigelrivett.net/SQL...s/GenerateTriggerForAudit.html

Imas nekoliko varijanti trigera koji prati promene na nivou kolone, pa prouci i izaberi ako ti odgovara. Sto je najlepse, trigeri su genericki i rade sa bilo kojom tabelom, bez velikog podesavanja. Tek toliko da ti ustedi vreme na proveri koja se kolona od tvojih 150 kolona promenila.

[ deerbeer @ 15.06.2011. 16:33 ] @
Plus, ako ide pesackom logikom IF UPDATED(kolona) komanda nece uvek raditi 100% tacno. Update je mozda uradjen ali to ne znaci da je polje promenilo vrednost .
[ sule99 @ 16.06.2011. 07:13 ] @
Hvala svima na odgovorima, bit će mi od velike pomoći ;)