Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nakladanie ograniczen na kolumny w tabelach mysql
blawat
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 17.03.2006

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


witam,

czy jest mozliwosc i ewnetualnie jak to zrobic aby bezposrednio na tabele bazy danych nalozyc pewne ograniczenia dotyczce wprowadzanych tam rekordow np:

tabla z informacjami o fakturach ma kolumny termin platnosci i data wystawienia

chcialbym aby przy dodawaniu "sama baza" sprawdzala czy termin platnosci >= data wystawienia jesli nie to generuje jakis tam blad nie dodaje rekordu etc

to oczywiscie trywialny przyklad ale chodzi mi sposob samej realizacji czy da sie to zrobic "prosto" przy projektowaniu samej struktury tabeli czy np tabele projektujemy "normalnie" a dopiero nakladamy na nia trigger + funkcje/procedure ktora weryfikuje nam to co robimy i ewnetualnie dodaje lub robi "cos innego"

pozdrawiam i dziekuje z gory za pomoc

Ten post edytował blawat 26.03.2010, 14:26:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trucksweb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


nie wiem czy sie da tak zrobic jak opisales - watpie, ale zapytam z ciekawosci dlaczego cos takiego chcesz robic ?

piszac aplikacje, Twoim obowiazkiem jest ja tak zebezpieczyc zeby do bazy wyslac tylko zapytanie insertujace a nie sprawdzac w samej bazie czy dane ktore wysylasz sa poprawne.
(IMG:style_emoticons/default/blinksmiley.gif)
Go to the top of the page
+Quote Post
Mchl
post
Post #3





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Triggery. BEFORE INSERT, BEFORE UPDATE.

Trucksweb, czasami jedna baza podpięta jest do wielu aplikacji. Wtedy lepiej tage ograniczenia trzymać w bazie.

Ten post edytował Mchl 26.03.2010, 16:08:55
Go to the top of the page
+Quote Post
someone.cool
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 31.01.2009

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


Cytat(Mchl @ 26.03.2010, 16:08:13 ) *
Triggery. BEFORE INSERT, BEFORE UPDATE.


ale trigger nie "odpowie" aplikacji że coś poszło źle... tylko faktura idzie w kosmos. Ogólnie limitowanie przez bazę jest wg. mnie złym podejściem, bo przecież walidowanie tego przez np. PHP jest stosunkowo proste i bardziej praktyczne w szczególności, że nie tracimy danych wklepanych do formularza.
Go to the top of the page
+Quote Post
Mchl
post
Post #5





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Jak się sprytnie napisze to odpowie. Musi jakoś rzucić błędem, a aplikacja to złapać. Ja zazwyczaj robię tabelę `errors` gdzie jest jedna kolumna z komunikatem błędu i kluczem UNIQUE, a potem z triggera wstawiam do tej tabeli komunikat błędu. Baza zwraca do aplikacji błąd nr 1062 a w komunikacie zawarty jest mój komunikat, który mogę regexem wyciągnąć i wyświetlić użytkownikowi.

Na około strasznie, ale zanim nie pojawi się SIGNAL to nie bardzo da się ianczej.

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:19