Hawaj81
24.01.2008, 20:53:26
Witam,
Mam oto taki problem:
tabela w oraclu: czas->kolumny to data i godzina.
Jak zrobić zapytanie (przez php) które przy dodaniu daty i godziny (poprzez metodę POST z wykorzystaniem foramularza) porówna dodany tą metodą rekord w tabeli i jeśli data i godzina będzie taka sama jak rekord istniejący wyświetli "taka data i godzina już jest" w przeciwnym przypadku "nie ma tej daty i godziny"
Trochę z tym namieszałem, ale pewnie będziecie wiedzieli o co chodzi.
Grzebałem troszkę o necie, ale nic nie znalazłem na ten temat.
dzięki za odpowiedzi
Grzyw
26.01.2008, 16:32:45
Nie wiem, czy Oracle poprzez triggery pomógłby, bo jestem w tym cieńki.
Ale zawsze możesz zrobić to standardem:
1) Pobierasz istniejącą datę z bazy
2) Konwertujesz datę z formularza i datę z bazy do identycznego formatu
3) Porównujesz je
4) Wywalasz komunikat lub ładujesz datę do bazy, jeżeli jest OK.
Ale triggery pewnie Ci pomogłyby zrobić to na poziomie bazy danych. I informacji o triggerach szukaj.
phpion
26.01.2008, 20:17:15
A nie lepiej założyć indeks unikalny na obie te kolumny jednocześnie? Wtedy przy próbie wpisania takich samych danych dostaniemy kominikat o duplikowaniu unikalnych danych. Inne rozwiązanie to takie, które przedstawił Grzyw. Trigger uruchamiany w momencie INSERTa oraz UPDATEa robiący prosty SELECT z warunkami WHERE data=:NEW.data AND godzina=:NEW.godzina. I jeśli NO_DATA_FOUND (nie ma takich rekordów) to OK, a w przeciwnym wypadku ROLLBACK i RAISE_APPLICATION_ERROR.