![]() |
![]() ![]() |
![]() |
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
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 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 5.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki wszystkim za odpowiedź. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W takim razie lecę dalej z tematem. Przerabiam sobie książkę rozdział po rozdziale więc mogę mieć więcej takich "ciekawych" pytań. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 05:40 |