![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 18.07.2009 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? 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 ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 02:12 |