ďťż
 
wersjonowanie - jak? [postgres] ďťż
 
wersjonowanie - jak? [postgres]
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

wersjonowanie - jak? [postgres]



cienki_bolek - 14-12-2006 16:08
wersjonowanie - jak? [postgres]
  Witam
Mam taki maly problem i chcialbym go elegancko rozwiazac.
Otoz sa dwie tabele: dokument i dokument_old. Maja taka sama strukture z ta roznica
ze w dokument_old dodalem kolumne d_version.
w dokument jest primary key na d_id.
wiersze w dokument_old sa jednoznacznie identyfikowane przez d_id i d_version.
i teraz powstaje problem jak zrobic cos takiego aby przy insercie do
dokument_old automatycznie wstawial kolejna wartosc d_version dla danego dokumentu, pewnie trigery ale jak?
inserty do dokument_old ida w przypadku update w dokument, moze zaczac juz w tym miejscu?
w tej chwili ta funkcje realizuje aplikacja ale chcialbym mozliwie jak najwiecej pracy zrzucic na baze.

inna sprawa jest to ze w tej chwili insert do dokument_old robi zapytanie:
insert into document_old select * from document where...
potem update d_version.
Jest to o tyle wygodne, ze nie musze znac struktury tabeli, a kolumna d_version znajduje sie na koncu z parametrem
default 0.
Jednak pojawi sie problem w przypadku dodania nowej kolumny. Z tego co sie orientuje chyba nie mozna w postgresie
dodac nowej kolumny przed juz istniejaca. nowe kolumny dodawane sa zawsze na koncu, tak?
jesli tak to chyba nie pozostaje nic innego jak tylko wymieniac wszystkie pola po kolei w tym insercie.

postgres 8.1
pozdr
cienki bolek





=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 14-12-2006 16:08

  On 27 Lis, 13:20, cienki_bolek <premislauer.cut.t...@o2.pl> wrote:
> Witam
> Mam taki maly problem i chcialbym go elegancko rozwiazac.
> Otoz sa dwie tabele: dokument i dokument_old. Maja taka sama strukture z ta roznica
> ze w dokument_old dodalem kolumne d_version.
> w dokument jest primary key na d_id.
> wiersze w dokument_old sa jednoznacznie identyfikowane przez d_id i d_version.
> i teraz powstaje problem jak zrobic cos takiego aby przy insercie do
> dokument_old automatycznie wstawial kolejna wartosc d_version dla danego dokumentu, pewnie trigery ale jak?
> inserty do dokument_old ida w przypadku update w dokument, moze zaczac juz w tym miejscu?
to chyba s?uszne podej?cie - w kodzie triggera mo?esz sprawdzi?,
jaka by?a ostatnia zarchiwizowana wersja dokumentu i doda? do tego 1
:)
co? a'la
select INTO latest_archived_version coalesce( max(d_version)+1, 1 )
FROM dokument_old WHERE d_id=NEW.d_id;




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-12-2006 16:08

  cienki_bolek wrote:
> Witam
> Mam taki maly problem i chcialbym go elegancko rozwiazac.
> Otoz sa dwie tabele: dokument i dokument_old. Maja taka sama strukture z
> ta roznica
> ze w dokument_old dodalem kolumne d_version.
> w dokument jest primary key na d_id.
> wiersze w dokument_old sa jednoznacznie identyfikowane przez d_id i
> d_version.
> i teraz powstaje problem jak zrobic cos takiego aby przy insercie do
> dokument_old automatycznie wstawial kolejna wartosc d_version dla danego
> dokumentu, pewnie trigery ale jak?
> inserty do dokument_old ida w przypadku update w dokument, moze zaczac
> juz w tym miejscu?
> w tej chwili ta funkcje realizuje aplikacja ale chcialbym mozliwie jak
> najwiecej pracy zrzucic na baze.

Prosto triggerem.
Ale jeste? pewien, ?e potrzebne Ci s? kolejne numerki wersji? Przecie? to jest
potrzebne tylko do sortowania. Ja u?ywam timstampa, te? sie ?adnie sortuje, a do
tego niesie dodatkow? i istotn? informacje, kiedy dany rekord zosta? zast?piony
przez nowy. Wystarczy default now().

> inna sprawa jest to ze w tej chwili insert do dokument_old robi zapytanie:
> insert into document_old select * from document where...
> potem update d_version.
> Jest to o tyle wygodne, ze nie musze znac struktury tabeli, a kolumna
> d_version znajduje sie na koncu z parametrem
> default 0.
> Jednak pojawi sie problem w przypadku dodania nowej kolumny. Z tego co
> sie orientuje chyba nie mozna w postgresie
> dodac nowej kolumny przed juz istniejaca. nowe kolumny dodawane sa
> zawsze na koncu, tak?
> jesli tak to chyba nie pozostaje nic innego jak tylko wymieniac
> wszystkie pola po kolei w tym insercie.

Zdecydowanie wymienia? kolumny.

--
P.M.
  • 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
  • lubiatowo.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