ďťż
 
PostgreSQL procedury wyzwalane. ďťż
 
PostgreSQL procedury wyzwalane.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

PostgreSQL procedury wyzwalane.



=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 04-11-2005 23:16
PostgreSQL procedury wyzwalane.
  Witam.
Tak dla próby stworzyłem sobie procedure wyzwalaną, która przy
operacjach typu insert, update kopiuje zmieniany/ wstawiany wiersz do
tabeli kopia. No i wszystko działa, ale pomyślałem sobie, że stworzę
procedurę zabraniającą wpisów bezpośrednio do tabeli kopia. No i
niestety ta procedura uniemożliwia tej poprzedniej dokonanie wpisu do
tabeli :(
Mam pytanie. Jak to można elegancko rozwiązać ? Chodzi mi o procedurę
uruchamianą przez trigger, a nie zabieranie praw do zapisu. Czyli jak
poznać, że jest to już kolejny poziom wyzwalacza.

Pozdrawiam

--
Cezary Grądys
czarekgr@wa.onet.pl





hubert depesz lubaczewski - 04-11-2005 23:16

  Dnia 30.10.2005 Cezary Grądys <czarekgr@wa.onet.pl> napisał/a:
> Tak dla próby stworzyłem sobie procedure wyzwalaną, która przy
> operacjach typu insert, update kopiuje zmieniany/ wstawiany wiersz do
> tabeli kopia. No i wszystko działa, ale pomyślałem sobie, że stworzę
> procedurę zabraniającą wpisów bezpośrednio do tabeli kopia. No i
> niestety ta procedura uniemożliwia tej poprzedniej dokonanie wpisu do
> tabeli :(
> Mam pytanie. Jak to można elegancko rozwiązać ? Chodzi mi o procedurę
> uruchamianą przez trigger, a nie zabieranie praw do zapisu. Czyli jak
> poznać, że jest to już kolejny poziom wyzwalacza.

nie sądze by dało się to zrobić bez praw.
tzn. oczywiście możesz dodać do tabeli "kopia" dodatkowe pole i jeśli
ktoś nie ustawia tam wartości to zakazać, a trigger główny by ustawiał.
ale myslę, że dużo bardziej elegancko jest:

1. stworzyć nowego usera (archiwista)
2. tabelę kopia utworzyć z ownerem archiwista
3. zabrać wszelkie prawa do kopii wszystkim poza archiwistą
4. dać uprawnienia wszystkie do tabeli podstawowej archiwiście.
5. funkcję triggera stwrozyć z ownerem archiwista i opcją: with security
definer
6. założyć triggera na tabeli podstawowej.

powinno zadziałać ładnie i elegancko z wydocznym rozróżniem funkcji.

depesz

--
*------------------------------------------------------------------*
najwspanialszą rzeczą jaką dało nam nowoczesne społeczeństwo, jest
niesamowita wręcz łatwość unikania kontaktów z nim




=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 04-11-2005 23:16

  Użytkownik hubert depesz lubaczewski napisał:
> Dnia 30.10.2005 Cezary Grądys <czarekgr@wa.onet.pl> napisał/a:
>
>>Tak dla próby stworzyłem sobie procedure wyzwalaną, która przy
>>operacjach typu insert, update kopiuje zmieniany/ wstawiany wiersz do
>>tabeli kopia. No i wszystko działa, ale pomyślałem sobie, że stworzę
>>procedurę zabraniającą wpisów bezpośrednio do tabeli kopia. No i
>>niestety ta procedura uniemożliwia tej poprzedniej dokonanie wpisu do
>>tabeli :(
>>Mam pytanie. Jak to można elegancko rozwiązać ? Chodzi mi o procedurę
>>uruchamianą przez trigger, a nie zabieranie praw do zapisu. Czyli jak
>>poznać, że jest to już kolejny poziom wyzwalacza.
>
>
> nie sądze by dało się to zrobić bez praw.
> tzn. oczywiście możesz dodać do tabeli "kopia" dodatkowe pole i jeśli
> ktoś nie ustawia tam wartości to zakazać, a trigger główny by ustawiał.
> ale myslę, że dużo bardziej elegancko jest:
>
> 1. stworzyć nowego usera (archiwista)
> 2. tabelę kopia utworzyć z ownerem archiwista
> 3. zabrać wszelkie prawa do kopii wszystkim poza archiwistą
> 4. dać uprawnienia wszystkie do tabeli podstawowej archiwiście.
> 5. funkcję triggera stwrozyć z ownerem archiwista i opcją: with security
> definer
> 6. założyć triggera na tabeli podstawowej.
>
> powinno zadziałać ładnie i elegancko z wydocznym rozróżniem funkcji.
>
> depesz
>

Dzięki.

--
Cezary Grądys
czarekgr@wa.onet.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • morebeer.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com