🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #81219

Re: MSSQL Trigger z parametrem

#81219
From: jast
Date: Tue, 25 Aug 2020 08:18
23 lines
1858 bytes
W dniu 2020-08-24 o 10:52, Pancio pisze:
> Witam wszystkich,
> Mam nadzieję, że grupa jeszcze nie umarła, choć od dłuższego czasu niewiele się tutaj dzieje. No ale do rzeczy.
> Mam sobie bazę w MS SQL Server 2014 (wersja Express). Do bazy użytkownicy łączą się z aplikacji w Delphi XE7 z poziomu FireDAC jako jeden użytkownik "sa" (tak, wiem, że nie tak powinno to wyglądać, ale jednak jest jak jest).
> Oczywiście jest tabela z danymi zalogowanych użytkowników i nadanych im numerów ID.
> No i o ile cała aplikacja bazodanowa działa nawet dość sprawnie i generalnie spełnia swoje zadania, to nadszedł czas rozbudowy aplikacji o dziennik zdarzeń. Chodzi po prostu o to, żeby w osobnej tabeli np. "Dziennik" zapisywane były zmiany typu kto, co i w jakiej tabeli zmienił.
> Sprawę w tym momencie załatwiłby wyzwalacz, ale nie mam pomysłu w jaki sposób do triggera przekazać jeden parametr będący numerem ID użytkownika, który danej zmiany dokonał.
> Czy w ogóle można to jakoś wykonać? Alternatywą jest obsługa takiego dziennika nie z poziomu bazy danych, a z samej aplikacji. Tyle, że roboty z tym trochę więcej.
> Bardzo proszę o pomoc osoby, które już zetknęły się z podobnym problemem.
>
> Dzięki,
> Pancio

Rzuć okiem na to
https://www.red-gate.com/simple-talk/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/


Drobny problem może być zapisanie ID użytkownika. Najprościej zrobić to
przez tabelę logowań, w której będziesz zapisywał logowania użytkowników
do aplikacji, zapisując w niej identyfikator sesji procesu (SPID pobrany
przez select @@SPID). W triggerze pobierzesz ten SPID i z tabeli logowań
odczytasz dane użytkownika. Oczywiście po wylogowaniu użytkownika z
aplikacji stosowny rekord z tabeli logowań należy usunąć :-)

Message-ID: <5f44ad20$0$520$65785112@news.neostrada.pl>
Path: polish.pugleaf.net!archive.newsdeef.eu!apf1.newsdeef.eu!not-for-mail
References: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com>