🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
18 messages
18 total messages Started by MaRc Mon, 31 Aug 2015 19:05
mysql i postgres - trigger czy cos innego?
#194593
Author: MaRc
Date: Mon, 31 Aug 2015 19:05
21 lines
1830 bytes
Witam
Potrzebuję rejestrować, a raczej zapisywać czas ostatniej zmiany w tabeli.
Mam tabelę nodes i jeśli coś do tej tabeli zostanie dodane, updateowane 
lub delete to by do tabeli nodes_lupdate był wpisywany timestamp.
tabela nodes_lupdate zawiera jedynie jedną kolumnę o nazwie tstamp. chcę 
zrobić "UPDATE nodes_lupdate set tstamp = now()" jeśli cokolwiek zmieni 
sie w tabeli nodes. potrzebne jest mi to do generowania danych do 
radiusa, jeśli nie było zmiany to nie ma potrzeby generowania nowej 
konfiguracji co za tym idzie nie ma potrzeby reloadu serwera.

Jakiego naprostrzego sposobu użyć do takiej rejestracji zmian w tabeli?

W postgresie muszę chyba użyć triggera, aczkolwiek nie działa on ze 
starszymi serwerami :/

W mysql?

-- 
MaRc
Nie kłóć się z idiotą. Będziesz musiał zniżyć się do jego poziomu a 
wówczas pobije cię swoimi argumentami.
Re: mysql i postgres - trigger czy cos innego?
#194594
Author: szemrany
Date: Mon, 31 Aug 2015 19:49
20 lines
1638 bytes
On Mon, 31 Aug 2015 21:05:34 +0200, MaRc wrote:

> Jakiego naprostrzego sposobu użyć do takiej rejestracji zmian w tabeli?
> 
> W postgresie muszę chyba użyć triggera, aczkolwiek nie działa on ze 
> starszymi serwerami :/

W Postgresie triggery są od dawien dawna, od co najmniej 15 lat na pewno.
 
> W mysql?

Też są, choć młodsze, od chyba wersji 5 czyli od 10 lat.

Przy czym MySQL to raczej zabawka, a PG to poważny serwer.

-- 
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Re: mysql i postgres - trigger czy cos innego?
#194595
Author: Tomek Kańka
Date: Mon, 31 Aug 2015 21:27
10 lines
1072 bytes
szemrany <szemrany@offline.off> napisał(a)
> Przy czym MySQL to raczej zabawka, a PG to poważny serwer.
>

Będzie jakiś flame?!

Może ja zacznę: pgAdmin jest do niczego w porównaniu z mySQL Workbench.

-- 
Tomek
Re: mysql i postgres - trigger czy cos innego?
#194596
Author: szemrany
Date: Mon, 31 Aug 2015 21:38
17 lines
1681 bytes
On Mon, 31 Aug 2015 21:27:07 +0000 (UTC), Tomek Kańka wrote:

>> Przy czym MySQL to raczej zabawka, a PG to poważny serwer.
> 
> Będzie jakiś flame?!

Lepszy flejm niż pustynia :-)

> Może ja zacznę: pgAdmin jest do niczego w porównaniu z mySQL Workbench.

A co to ma do samego serwera, przepraszam?

-- 
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Re: mysql i postgres - trigger czy cos innego?
#194597
Author: Tomek Kańka
Date: Mon, 31 Aug 2015 21:57
23 lines
1619 bytes
szemrany <szemrany@offline.off> napisał(a)
> Lepszy flejm niż pustynia :-)

Tutaj się zdadzamy, więdz pomijamy temat:).

>
>> Może ja zacznę: pgAdmin jest do niczego w porównaniu z mySQL Workbench.
>
> A co to ma do samego serwera, przepraszam?
>


Bo liczy się cały ekosytem: drivery, dodatkowe bibliteki, narzedzia dla
administratorów/developerów. Bo jak tego nie ma, to próg wejścia jest
wyższy i odstrasza.

I jak odplam (codziennie) pgAdmina, to mnie nerw bierze. 
Choć możliwe, że jakbym cześciej używał mySQL to nerw byłby podobny:).
Ale jak przy robieniu jakiejś aplikacji musiałem używałeć, to ten Workbench mi nawet nie
przeszkadzał.

-- 
Tomek
Re: mysql i postgres - trigger czy cos innego?
#194598
Author: szemrany
Date: Mon, 31 Aug 2015 23:25
25 lines
1996 bytes
On Mon, 31 Aug 2015 21:57:17 +0000 (UTC), Tomek Kańka wrote:

>>> Może ja zacznę: pgAdmin jest do niczego w porównaniu z mySQL Workbench.
>>
>> A co to ma do samego serwera, przepraszam?

> Bo liczy się cały ekosytem: drivery, dodatkowe bibliteki, narzedzia dla
> administratorów/developerów. Bo jak tego nie ma, to próg wejścia jest
> wyższy i odstrasza.
> 
> I jak odplam (codziennie) pgAdmina, to mnie nerw bierze. 
> Choć możliwe, że jakbym cześciej używał mySQL to nerw byłby podobny:).
> Ale jak przy robieniu jakiejś aplikacji musiałem używałeć, to ten Workbench mi nawet nie
> przeszkadzał.

Za "chwilę" będzie nowe narzędzie do administrowania PG odf firmy Upscene,
więc będzie ok.

A teraz serwery. Co ma MySQL czego brakuje PG? :-)

-- 
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Re: mysql i postgres - trigger czy cos innego?
#194599
Author: hubert depesz lubaczewski
Date: Tue, 01 Sep 2015 07:54
25 lines
2256 bytes
On 2015-08-31, MaRc <tuksmr@gmail.com> wrote:
> Witam
> Potrzebuję rejestrować, a raczej zapisywać czas ostatniej zmiany w tabeli.
> Mam tabelę nodes i jeśli coś do tej tabeli zostanie dodane, updateowane 
> lub delete to by do tabeli nodes_lupdate był wpisywany timestamp.
> tabela nodes_lupdate zawiera jedynie jedną kolumnę o nazwie tstamp. chcę 
> zrobić "UPDATE nodes_lupdate set tstamp = now()" jeśli cokolwiek zmieni 
> sie w tabeli nodes. potrzebne jest mi to do generowania danych do 
> radiusa, jeśli nie było zmiany to nie ma potrzeby generowania nowej 
> konfiguracji co za tym idzie nie ma potrzeby reloadu serwera.
>
> Jakiego naprostrzego sposobu użyć do takiej rejestracji zmian w tabeli?
>
> W postgresie muszę chyba użyć triggera, aczkolwiek nie działa on ze 
> starszymi serwerami :/

Znaczy to? Znalazłeś wersję postgresa w której nie działają triggery.
Gratulacje. A teraz podziel się informacją co to za wersja, bo o ile ja
wiem, to triggery są "od zawsze".

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/
Re: mysql i postgres - trigger czy cos innego?
#194600
Author: MaRc
Date: Tue, 01 Sep 2015 08:08
17 lines
1809 bytes
Dzięki Panowie za sugestie, ale nie pytanie i wątek nie jest o wyższości 
jednego serwera nad drugim.

Wiem, że triggery w PG są od dawna, ale jak próbowałem zrobić na 8.3 to 
krzyczał, że nie można użyć jakieś funkcji, dopiero od 9.1 to działało. 
Nie pamietam dokładnie jakiej, ale nie mogłem osiągnąć tego co chciałem, 
a mianowicie wykonanie funcji przy określonych zdarzeniach.

Moje pytanie odnośnie dwóch baz spowodowane jest, że musi to działać na 
dwóch silnikach.
Podpowiecie jak to zrobić prawidłowo na tych bazach?


-- 
MaRc
Nie kłóć się z idiotą. Będziesz musiał zniżyć się do jego poziomu a 
wówczas pobije cię swoimi argumentami.
Re: mysql i postgres - trigger czy cos innego?
#194602
Author: artiun
Date: Tue, 01 Sep 2015 09:19
13 lines
2167 bytes
W dniu 2015-09-01 o 10:08, MaRc pisze:
> Moje pytanie odnośnie dwóch baz spowodowane jest, że musi to działać na
> dwóch silnikach.
> Podpowiecie jak to zrobić prawidłowo na tych bazach?
>
Przecież znasz odpowiedź. Trigera do bazy może dołożyć admin. Programista 
pisał swoje, jeśli nie dodał (kto i kiedy, co) to jego wina (a powinien - bo 
wtedy dba o własną d..). Nie widzę problemu, dodaj triger na on.. delete, 
update. Struktura bazy jest twoja, logiki nie zmieniasz.


-- 
Artur
Re: mysql i postgres - trigger czy cos innego?
#194603
Author: Lesiok
Date: Tue, 01 Sep 2015 09:24
23 lines
1996 bytes
W dniu 2015-09-01 o 10:08, MaRc pisze:
> Dzięki Panowie za sugestie, ale nie pytanie i wątek nie jest o wyższości
> jednego serwera nad drugim.
>
> Wiem, że triggery w PG są od dawna, ale jak próbowałem zrobić na 8.3 to
> krzyczał, że nie można użyć jakieś funkcji, dopiero od 9.1 to działało.
> Nie pamietam dokładnie jakiej, ale nie mogłem osiągnąć tego co chciałem,
> a mianowicie wykonanie funcji przy określonych zdarzeniach.
>
> Moje pytanie odnośnie dwóch baz spowodowane jest, że musi to działać na
> dwóch silnikach.
> Podpowiecie jak to zrobić prawidłowo na tych bazach?
>
>
Po pierwsze skoro nie może użyć "jakiejś" funkcji to zastosuj "jakąś" 
inną funkcję. Szklana kula nie działa. Jak napiszesz z czym konkretnie 
masz to dostaniesz konkretną pomoc.
A tak poza tym PostgreSQL starszy niż 9.0 nie jest już wspierany i lada 
dzień (wrzesień 2015) zakończy karierę 9.0.

-- 
Pozdrawiam,
Leszek Kubrak
Re: mysql i postgres - trigger czy cos innego?
#194604
Author: MaRc
Date: Tue, 01 Sep 2015 10:22
15 lines
1550 bytes
> Po pierwsze skoro nie może użyć "jakiejś" funkcji to zastosuj "jakąś"
> inną funkcję. Szklana kula nie działa. Jak napiszesz z czym konkretnie
> masz to dostaniesz konkretną pomoc.

Zgadza się nie szklana kula, ale teraz nie pamiętam dokładnie, ale to 
było chyba to, że nie mogłem użyć LANGUAGE plpsql.

Może jakiś exampel jak to prawidłowo zrobić?


-- 
MaRc
Nie kłóć się z idiotą. Będziesz musiał zniżyć się do jego poziomu a 
wówczas pobije cię swoimi argumentami.
Re: mysql i postgres - trigger czy cos innego?
#194605
Author: irq
Date: Tue, 01 Sep 2015 10:36
10 lines
1901 bytes
W dniu wtorek, 1 września 2015 12:22:13 UTC+2 użytkownik MaRc napisał:
> > Po pierwsze skoro nie może użyć "jakiejś" funkcji to zastosuj "jakąś"
> > inną funkcję. Szklana kula nie działa. Jak napiszesz z czym konkretnie
> > masz to dostaniesz konkretną pomoc.
> 
> Zgadza się nie szklana kula, ale teraz nie pamiętam dokładnie, ale to 
> było chyba to, że nie mogłem użyć LANGUAGE plpsql.
> 
CREATE LANGUAGE plpgsql
http://www.postgresql.org/docs/current/static/sql-createlanguage.html
Re: mysql i postgres - trigger czy cos innego?
#194606
Author: MaRc
Date: Tue, 01 Sep 2015 10:42
12 lines
1630 bytes
> CREATE LANGUAGE plpgsql
> http://www.postgresql.org/docs/current/static/sql-createlanguage.html
>

to mogło być to :)
a w mysql jak osiągnąć efekt o który mi chodzi?


-- 
MaRc
Nie kłóć się z idiotą. Będziesz musiał zniżyć się do jego poziomu a 
wówczas pobije cię swoimi argumentami.
Re: mysql i postgres - trigger czy cos innego?
#194607
Author: irq
Date: Tue, 01 Sep 2015 10:43
6 lines
1602 bytes
> 
> Może jakiś exampel jak to prawidłowo zrobić?
> 
> 
http://www.postgresql.org/docs/9.4/static/plpgsql-trigger.html#PLPGSQL-DML-TRIGGER
Re: mysql i postgres - trigger czy cos innego?
#194601
Author: artiun
Date: Tue, 01 Sep 2015 21:05
14 lines
2339 bytes
W dniu 2015-09-01 o 12:43, irq pisze:
>
>>
>> Może jakiś exampel jak to prawidłowo zrobić?
>>
Nie trzeba example - co, kto, kiedy to mało. Trzeba robić kopie, przed, po. 
W przypadku delete kopię tego co zostało usunięte. Taka tabela historyczna 
będzie niestety większa od źródłowej. Coś za coś. Nie trzeba zaraz tego 
rozgłaszać, we właściwym momencie może uratować Ci d.. Zwłaszcza kiedy ma 
się do czynienia z wrażliwymi danymi.


-- 
Artur
Re: mysql i postgres - trigger czy cos innego?
#194612
Author: hubert depesz lubaczewski
Date: Wed, 02 Sep 2015 10:32
26 lines
2222 bytes
On 2015-08-31, MaRc <tuksmr@gmail.com> wrote:
> Potrzebuję rejestrować, a raczej zapisywać czas ostatniej zmiany w tabeli.
> Mam tabelę nodes i jeśli coś do tej tabeli zostanie dodane, updateowane 
> lub delete to by do tabeli nodes_lupdate był wpisywany timestamp.
> tabela nodes_lupdate zawiera jedynie jedną kolumnę o nazwie tstamp. chcę 
> zrobić "UPDATE nodes_lupdate set tstamp = now()" jeśli cokolwiek zmieni 
> sie w tabeli nodes. potrzebne jest mi to do generowania danych do 
> radiusa, jeśli nie było zmiany to nie ma potrzeby generowania nowej 
> konfiguracji co za tym idzie nie ma potrzeby reloadu serwera.

w tej tabeli nodes_lupdate masz tylko jeden rekord, czy jeden dla
każdego rekordu w nodes?

jeśli jeden dla każdego w nodes, to czemu po prostu nie zrobisz nowej
kolumny w nodes?

jeśli jeden rekord, i zmieniamy to za każdym razem jak cokolwiek się
zmieni, to to jest bardzo niebezpieczne rozwiązanie, bo będzie ci się
lockować przy transakcjach robiących cokolwiek innego niż jednorekordowa
zmiana w nodes.

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/
Re: mysql i postgres - trigger czy cos innego?
#194613
Author: MaRc
Date: Thu, 03 Sep 2015 07:56
45 lines
2639 bytes
W dniu 02.09.2015 o 12:32, hubert depesz lubaczewski pisze:
> w tej tabeli nodes_lupdate masz tylko jeden rekord, czy jeden dla
> każdego rekordu w nodes?

tylko jeden rekord, który będzie mówił o tym, że nastąpiła jakakolwiek 
zmiana w tabeli nodes i trzeba będzie wygenerować nowy config.

>
> jeśli jeden dla każdego w nodes, to czemu po prostu nie zrobisz nowej
> kolumny w nodes?

to nie jest rozwiązanie. bo przy DELETE nie bedzie tej informacji bo 
wiersz zostanie usunięty. pozatym, trzeba porównywać x wierszy z datą. 
przy osobnej tabeli jedynie z datą nie ma takiego problemu


>
> jeśli jeden rekord, i zmieniamy to za każdym razem jak cokolwiek się
> zmieni, to to jest bardzo niebezpieczne rozwiązanie, bo będzie ci się
> lockować przy transakcjach robiących cokolwiek innego niż jednorekordowa
> zmiana w nodes.

hmm, nie robię masowych updateow ale o tym nie pomyslałem. czyli jeśli 
bym zrobił masową zmiane, powiedzmy 100 rekordów, objął to transakcją to 
z tego co rozumiem, to sie nie wykona, zostanie zlockowane?

dla mnie newralgiczne są trzy kolumny z tabeli nodes. może tylko je 
"śledzić" i triggerować? ale nie zmienia to faktu ewentualnej masowej 
zmiany, o której wspomniałeś.

to jak to naładniej z poziomu bazy zrobić?





>
> depesz
>


-- 
MaRc
Nie kłóć się z idiotą. Będziesz musiał zniżyć się do jego poziomu a 
wówczas pobije cię swoimi argumentami.
Re: mysql i postgres - trigger czy cos innego?
#194610
Author: hubert depesz lubaczewski
Date: Thu, 03 Sep 2015 16:58
28 lines
2158 bytes
On 2015-09-03, MaRc <tuksmr@gmail.com> wrote:
> hmm, nie robię masowych updateow ale o tym nie pomyslałem. czyli jeśli 
> bym zrobił masową zmiane, powiedzmy 100 rekordów, objął to transakcją to 
> z tego co rozumiem, to sie nie wykona, zostanie zlockowane?

jedna się wykona. ale jak bedzie wiele polaczen do bazy danych, kazde
costam robilo/zmienialo, to bedzie problem.

> dla mnie newralgiczne są trzy kolumny z tabeli nodes. może tylko je 
> "śledzić" i triggerować? ale nie zmienia to faktu ewentualnej masowej 
> zmiany, o której wspomniałeś.
> to jak to naładniej z poziomu bazy zrobić?

ja by zrobil tak: tabela na informacje o zmianie ma jedna kolumnę, ale
wiele wierszy.
i po prostu zamiast update, to insert.

insert sie nie zalockuje. dodatkowo - w danych wstawianych do tej tabeli
mozesz zawrzec dodatkowe informacje - np. id rekordu zmienionego.

a to cos co ma aktualizowac dane na zewnatrz bazy - po prostu jak zrobi
swoje to niech kasuje rekordy z tabeli "zmian" i juz.

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads