Czas w pl/sql

0

Cześć wszystkim!
Chcę wiedzieć, czy możliwe jest utworzenie warunku w pl / sql, aby użytkownik nie mógł dodać 2 posty w ciągu jednej minuty? i jak mogę to zrobić? Wiem, że muszę dodać SYSDATE, ale jak skonstruować warunki? Mógłby ktoś mnie nakierować lub cokolwiek w strone odpowiedzi? na pewno umiescic to potem trzeba w procedurze w ktorej dodaje ale na warunki nie mam pomyslu ;/

0

co to jest nie mógł dodać 2 posty? Jeśli chodzi o rekord do jakiejś tabeli to musisz gdzieś trzymać dodatkowo jakiś id usera i czas ostatniego dodania. A potem przy dodawaniu sprawdzasz czy sysdate - ostatni_czas > 1 w triggerze i tyle

0

nie mogl dodac 2 posty tzn po dodaniu jednego posta uzytkownik musialby odczekac minute zanim moglby dodac kolejnego, wiem ze prawdopodobnie jest dla Ciebie latwe itd no ale robie to pierwszy raz, mowisz sysdate-ostatniczas>1 , skad wiemy ze mowiac ,,1" mamy na mysli minuty? chodzi mi wlasnie o to jak zapisac by pl/sql wiedzial ze to chodzi nam wlasnie o minuty a nie o cos innego

1

Nie powinieneś używać odejmowania dat (data1 - data2), jeśli nie znasz się za bardzo na typach danych w Oracle (jak sam napisałeś).
Użyj warunku:

SYSDATE > a + 1/(24 *60), gdzie a jest ostatnim czasem dodania przez użytkownika postu na forum (wówczas pozwalasz mu wejść z kolejnym postem). Oracle łyknie taką składnię bez problemu.

0

Moglby ktos jeszcze odpowiedziec w jaki sposob moglbym uzyskac doostep do drugiego najnowszego czasu uzytkownika o pewnym id??

0
shadox napisał(a):

Moglby ktos jeszcze odpowiedziec w jaki sposob moglbym uzyskac doostep do drugiego najnowszego czasu uzytkownika o pewnym id??

@shadox
W Oraclu jest co prawda niby-kolumna ROWNUM, ale nie jest ona do końca prosta do twojego przypadku, w którym trzeba:

  1. Wyciagnąć dane z tabeli dla użytkownika o konkretnym id
  2. Posortować je według daty
  3. Do wyniku dołożyć dodatkową koumnę ROWNUM
  4. Z tegoż wyniku wyciagnąć ten wiersz, którego ROWNUM (a dokładniej alias ROWNUM) jest równy 2

Napisałem dla ciebie gotowe zapytanie, dla użytkownika o id 10:

SELECT * FROM (SELECT ROWNUM rn, some_date FROM (SELECT some_date FROM some_table WHERE user_id = 10 ORDER BY some_date)) WHERE rn = 2;

1 użytkowników online, w tym zalogowanych: 0, gości: 1