ďťż
 
procedurka pod postgresql ďťż
 
procedurka pod postgresql
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

procedurka pod postgresql



jarek - 11-05-2006 17:24
procedurka pod postgresql
  Witam
siedze dlubie ale jakiś mi nie wychodzi
czy może ktoś mi pomoc napisać procedure pod postgres-a
która w przypadku usuniecia kontrahenta z tabeli kontrahenci
usunie z tabel dokumenty i dokumentypozycje wszystkie jego operacje
oto table :

kontahenci
idkontahenta
nazwa

dokumenty
idkontrahenci
datta
itp......

dokumentypozycje
iddokumenty
idprodukt
itp....

pozdrawiam

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





Parasit Hendersson - 11-05-2006 17:24

  Dnia Wed, 10 May 2006 12:15:54 +0200, jarek napisał(a):

> Witam
> siedze dlubie ale jakiś mi nie wychodzi
> czy może ktoś mi pomoc napisać procedure pod postgres-a
> która w przypadku usuniecia kontrahenta z tabeli kontrahenci
> usunie z tabel dokumenty i dokumentypozycje wszystkie jego operacje
> oto table :
>
> kontahenci
> idkontahenta
> nazwa
>
> dokumenty
> idkontrahenci
> datta
> itp......
>
> dokumentypozycje
> iddokumenty
> idprodukt
> itp....

Jakoś tak (pisze z pamieci):

<code>
create or replace function kasuj (kotrahent int) ...blablabla

delete from dokumentypozycje where iddokumenty in (select iddokumentu from
dokumenty where idkontrahenci = kontrahent) ;
delete from dokumenty where idkonrahenci = kontrahent;
delete from kontahenci where idkontrahenta = kontrahent;
.... blabla
</code>

Mozesz jeszcze sie pobawic sie z kursorami, ale to powinno dziala.

Jesli to jakies faktury, to pomysl jeszcze o stanach magazynowych itp.

Pozdrawiam
Parasit Hendersson




Filip - 11-05-2006 17:24

 
jarek wrote:
> Witam
> siedze dlubie ale jakiś mi nie wychodzi
> czy może ktoś mi pomoc napisać procedure pod postgres-a
> która w przypadku usuniecia kontrahenta z tabeli kontrahenci
> usunie z tabel dokumenty i dokumentypozycje wszystkie jego operacje

sorki że się wtrącam ale z doświadczenia wiem że nie jest to dobry
pomysł.
lepiej wyświetlić komunikat "kontrahent ma aktywne operacje" czy
jakoś tak i zmusić użytkownika do ich wyczyszczenia. zwłaszcza
jeżeli są to operacje finansowe.

jeśli chodzi o metodę - poza tym co już zostało powiedziane(czyli
wykonywanie wszystkiego poprzez procedury składowane), można to
załatwić
a) kluczami obcymi z klauzulą ON DELETE ( po twojemu - on delete
cascade, po mojemu - on delete restrict)
b) triggerami; np w triggerze BEFORE DELETE zastosować taki kod jak
podał kolega z wątku

> oto table :
>
> kontahenci
> idkontahenta
> nazwa
>
> dokumenty
> idkontrahenci
> datta
> itp......
>
> dokumentypozycje
> iddokumenty
> idprodukt
> itp....
>




Adam - 11-05-2006 17:24

  Parasit Hendersson napisał(a):
> Dnia Wed, 10 May 2006 12:15:54 +0200, jarek napisał(a):
>
>
>>Witam
>>siedze dlubie ale jakiś mi nie wychodzi
>>czy może ktoś mi pomoc napisać procedure pod postgres-a
>>która w przypadku usuniecia kontrahenta z tabeli kontrahenci
>>usunie z tabel dokumenty i dokumentypozycje wszystkie jego operacje
>>oto table :
>>
>>kontahenci
>>idkontahenta
>>nazwa
>>
>>dokumenty
>>idkontrahenci
>>datta
>>itp......
>>
>>dokumentypozycje
>>iddokumenty
>>idprodukt
>>itp....
>
>
> Jakoś tak (pisze z pamieci):
>
> <code>
> create or replace function kasuj (kotrahent int) ...blablabla
>
> delete from dokumentypozycje where iddokumenty in (select iddokumentu from
> dokumenty where idkontrahenci = kontrahent) ;
> delete from dokumenty where idkonrahenci = kontrahent;
> delete from kontahenci where idkontrahenta = kontrahent;
> ... blabla
> </code>
>
> Mozesz jeszcze sie pobawic sie z kursorami, ale to powinno dziala.
>
> Jesli to jakies faktury, to pomysl jeszcze o stanach magazynowych itp.
>
> Pozdrawiam
> Parasit Hendersson

Jeżeli założysz referencję na te tabele w efekcie otrzymasz to samo bez
procedury.

Pozdrawiam.





Q - 11-05-2006 17:25

  > siedze dlubie ale jakiś mi nie wychodzi
> czy może ktoś mi pomoc napisać procedure pod postgres-a
> która w przypadku usuniecia kontrahenta z tabeli kontrahenci
> usunie z tabel dokumenty i dokumentypozycje wszystkie jego operacje

trigger'em?




Grzegorz Szyszlo - 11-05-2006 17:25

  Adam wrote:

> Jeżeli założysz referencję na te tabele w efekcie otrzymasz to samo bez
> procedury.

ale musi to byc referencja z opcja on delete cascade .
bo normalnie, to bez usuniecia danych z tabel opcych, usuniecie
kontrachenta jest zablokowane.

znik.
  • 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
  • felgiuzywane.xlx.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