• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PL/SQL][Oracle] Trigger wyzwalany co godzinę.

Object Storage Arubacloud
+1 głos
1,292 wizyt
pytanie zadane 18 maja 2017 w SQL, bazy danych przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Cześć,

Ostatnio zacząłem naukę SQL, a ponieważ w przyszłości mam kurs z bazami danych to dokładnie zacząłem PL/SQL + Oracle. Chciałem zaprojektować własną bazę danych, która będzie obsługiwała pewien park maszynowy. W skrócie pewne maszyny będą tworzyły pewne produkty, każdy produkt tworzy się inną ilość godzin i używa jednej z kilku maszyn (podobnie jak druk 3D). Mam napisane funkcje, które liczą priorytet, wybierają maszyny i zajmują się całym kolejkowaniem ich wykonania.

Problem polega na tym, że chciałbym aby co godzinę wyzwalał się trigger, który porządkuje kolejkę zadań oraz sprawdza czy przypadkiem jakieś zadanie nie zostały wykonane. Wszystko tak naprawdę umiałbym zrobić oprócz zrobienia tego wyzwalanie czasowego - szukałem i nie znalazłem (może słabo :p). Byłbym dozgonnie wdzięczny, jeżeli ktoś byłby w stanie pokazać mi jak baza danych mogłaby sama wywoływać pewne procedury/funkcje/wyzwalacze/bloki anonimowe co określony czas.

2 odpowiedzi

+2 głosów
odpowiedź 18 maja 2017 przez Chess Szeryf (76,710 p.)
wybrane 24 maja 2017 przez Marcin_N_97
 
Najlepsza

Poczytajcie może najpierw o różnicach pomiędzy event, a trigger bardzo bym was oto prosił.

http://blog.adamzawalski.com/trigger-mysql/

http://blog.gabrym.pl/2008/09/01/event-scheduler-cron-w-mysql/

Co na to dokumentacja MySQL:

https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html

Trigger:

This statement creates a new trigger. A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table. The trigger becomes associated with the table named tbl_name, which must refer to a permanent table. You cannot associate a trigger with a TEMPORARY table or a view.

Event:

This statement creates and schedules a new event. The event will not run unless the Event Scheduler is enabled. For information about checking Event Scheduler status and enabling it if necessary, see Section 23.4.2, “Event Scheduler Configuration”.

Dochodzimy do wniosku takiego, że aby samoistnie coś zmieniło się w bazie musisz użyć event'a, takiego jakby cron'a w MySQL lub innej bazie.

Jeśli źle cię zrozumiałem to proszę mnie poprawić.

Co na to Oracle:

https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/triggers.htm#LNPLS020

https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse008.htm#ADMIN12445

Trigger:

A trigger is a named PL/SQL unit that is stored in the database and executed (fired) in response to a specified event that occurs in the database.

Event:

An event is a message sent by one application or system process to another to indicate that some action or occurrence has been detected. An event is raised (sent) by one application or process, and consumed (received) by one or more applications or processes.

Moim zdaniem powinieneś użyć event'a, a może nawet musisz, co do tego pewności nie mam ponieważ chcesz użyć bazę danych Oracle.

Co na to ja:

https://forum.pasja-informatyki.pl/249219/gra-przegladarkowa-przyrost-surowcow#a249326

W tym linku jest moja odpowiedź, w której kod samoczynnie zmienia ilość, np. orzechów na inną wartość, co 30 sekund.

 

komentarz 24 maja 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Zabanglało, dzięki bardzo. Dla osób, które znajdą się z podobnym problemem - od razu w ten link:

https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse008.htm#ADMIN12445

Reszta rzeczy to w większośc MYSQL, który na Oracle PL/SQL nie działa :(
+1 głos
odpowiedź 18 maja 2017 przez marcin1008 Nowicjusz (200 p.)
Mam podobny problem. Potrzebuję aby pewna procedura wykonywała się automatycznie o pełnej godzinie. Niestety również nie potrafię znaleźć nigdzie na ten temat żadnych informacji ani wskazówek. Może ktoś wie jak to zrobić, albo przynajmniej nakieruje na jakieś funkcje z których trzeba skorzystać? Z góry dzięki !

Podobne pytania

0 głosów
2 odpowiedzi 334 wizyt
pytanie zadane 23 stycznia 2018 w SQL, bazy danych przez Lemon Nowicjusz (210 p.)
0 głosów
2 odpowiedzi 1,116 wizyt
pytanie zadane 31 sierpnia 2017 w SQL, bazy danych przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
1 odpowiedź 1,086 wizyt
pytanie zadane 9 maja 2019 w SQL, bazy danych przez poldeeek Mądrala (5,980 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...