![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 5.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem z ograniczeniem CHECK. Korzystam z MySQL'a na Ubuntu (wersja MySQL'a: 5.0.22-Debian_0ubuntu6.06.3-log ). Biorąc za przykład: Tworząc nową tabelę np. CREATE TABLE xxx ( Nazwisko varvhar(10), Wiek int NOT NULL CHECK (Wiek>=0) ); Następnie wstawiając nowe dane za "Wiek" np. -30 opcja check w ogole nie sprawdza tego warunku. Wpisuje poprostu do BD wartosci ujemne. Czy ktoś wie w czym problem? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat The CHECK clause is parsed but ignored by all storage engines. http://dev.mysql.com/doc/refman/5.0/en/create-table.html czyli Nie da sie, to nie postgresql ![]() -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
zawsze możesz po prostu stworzyć tabelę z INT UNSIGNED zamiast INT, i nie wpisze Ci wartości ujemnych.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
co prawda MySQL nie obsługuje CHECK() ani nie ma wyzwalaczy TRIGGER(), ale w pewnych przypadkach można zmusić serwer do sprawdzania danych, czasami stosuję tą sztuczkę kiedy nie mam możliwości sprawdzenia danych przed zapisem do bazy... np. przy imporcie obcych danych z pliku ...
załóż sobie tabelkę np. _wiek, z jednym polem, powiedzmy _wiek :)
wypełnij pole _wiek kolejnymi liczbami od 1 do powiedzmy 120... a do swojego pola Wiek w tabelce xxx dodaj klucz obcy...
i teraz każda próba UPDATE lub INSERT tabeli xxx z polem Wiek o wartości nie występującej w tabelce _wiek zakończy się błędem... powodzenia -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 5.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki wszystkim za odpowiedź.
![]() W takim razie lecę dalej z tematem. Przerabiam sobie książkę rozdział po rozdziale więc mogę mieć więcej takich "ciekawych" pytań. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:55 |