Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PostgreSQL]Trigger w PostgreSQL
patong
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2009

Ostrzeżenie: (0%)
-----


Witam

jest to dla mnie nowy temat dlatego pytam bo się nie znam.

Mam baze ogłoszeń i m.in. kolumny:

start_time (timestamp with timezone)
end_time (timestamp with timezone)
status (integer)


I potrzebuje zrobić taki wyzwalacz żeby w momencie osiągnięcia end_time zmienić status na np. 0
Podejrzewam że jest to pewnie z 3-4 linijki kodu ale nie znalazłem prostego tutka ani opisu.

dlatego z góry dzięki kto pomoże

pozdrawiam
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wyzwalacze wyzwalane są przy okazji jakiegoś zdarzenia, np. dodania nowego rekordu albo usunięcia starego. Tak więc musisz skorzystać z czegoś innego. Prawdopodobnie najprostszym rozwiązaniem będzie stworzenie jakiegoś prostego daemona działającego w nieskończonej pętli, który pobiera sobie informacje o tym które rekordy zdezaktualizują się w ciągu najbliższych przykładowo pięciu minut po czym zmieni ich stan (odczekując jeszcze tych kilka sekund od momentu pobrania informacji). Gdy kolejka rekordów do aktualizacji skończy się odczeka kilka sekund (do czasu upłynięcia tych pięciu minut) po czym cały proces rozpocznie się od nowa.

PS. Jak rozumiem dynamiczne określanie statusu poprzez porównanie aktualnej daty i daty w end_time nie wchodzi w grę z jakiś konkretnych powodów?

Ten post edytował Crozin 20.04.2011, 20:42:03
Go to the top of the page
+Quote Post
patong
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2009

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 20.04.2011, 21:41:08 ) *
Wyzwalacze wyzwalane są przy okazji jakiegoś zdarzenia, np. dodania nowego rekordu albo usunięcia starego. Tak więc musisz skorzystać z czegoś innego. Prawdopodobnie najprostszym rozwiązaniem będzie stworzenie jakiegoś prostego daemona działającego w nieskończonej pętli, który pobiera sobie informacje o tym które rekordy zdezaktualizują się w ciągu najbliższych przykładowo pięciu minut po czym zmieni ich stan (odczekując jeszcze tych kilka sekund od momentu pobrania informacji). Gdy kolejka rekordów do aktualizacji skończy się odczeka kilka sekund (do czasu upłynięcia tych pięciu minut) po czym cały proces rozpocznie się od nowa.

PS. Jak rozumiem dynamiczne określanie statusu poprzez porównanie aktualnej daty i daty w end_time nie wchodzi w grę z jakiś konkretnych powodów?


słuszne pytanie, tak chciałem zrobić na początku i prawdopodobnie do tego wrócę, choć wydaje mi się to nie tyle nieoptymalne co prymitywne...
No i dochodzi do tego jeszcze kwestia taka że statusów mogę mieć kilka - np. ogłoszenie zablokowane, zarchiwizowane itp. stąd jedna kolumna 'status' a niej integer.

Dzięki za pomoc smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 02:12