🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: MSSQL Trigger z parametrem

#82987
From: Miroo
Date: Tue, 25 Aug 2020 08:57
29 lines
3052 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
>

Ja w większości tabel mam datę modyfikacji i id użytkownika 
modyfikującego, co załatwiłoby temat.
Ale to by było u Ciebie za dużo zmian.
Inne opcje:
- przekazywać id użytkownia w Application name (w connection string)
- skorzystać z CONTEXT_INFO()
- przy budowaniu połączenia tworzyć tabelę tymczasową z potrzebnymi 
danymi (może wpłynąć na wydajność, jeśli często tworzysz połączenia)
- tabela sesji
- i pewnie parę innych pomysłów by się znalazło...

Dodatkowo można skorzystać np z host_name(), aby odczytać nazwę 
komputera klienta (w przypadku aplikacji desktopowej).

Pozdrawiam
Technical Details
Message-ID: <5f44d299$0$526$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!peer02.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!peer02.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: MSSQL Trigger z parametrem
Newsgroups: pl.comp.lang.delphi.bazy-danych
References: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com>
From: Miroo <brak_emaila@brak.brak.i.juz>
Date: Tue, 25 Aug 2020 10:57:59 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0
MIME-Version: 1.0
In-Reply-To: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com>
Lines: 30
Message-ID: <5f44d299$0$526$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 91.197.153.32
X-Trace: 1598345881 unt-rea-b-01.news.neostrada.pl 526 91.197.153.32:9952
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 2824
X-Received-Body-CRC: 3322970206
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit