Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ograniczenie CHECK
Rabarbar
post
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?
Go to the top of the page
+Quote Post
dr_bonzo
post
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)
Go to the top of the page
+Quote Post
Cezar708
post
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.
Go to the top of the page
+Quote Post
nevt
post
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 :)
  1. CREATE TABLE `_wiek` (`_wiek` int(10) UNSIGNED NOT NULL, PRIMARY KEY (`_wiek`));

wypełnij pole _wiek kolejnymi liczbami od 1 do powiedzmy 120...
a do swojego pola Wiek w tabelce xxx dodaj klucz obcy...
  1. ALTER TABLE xxx ADD CONSTRAINT `wiek_check` FOREIGN KEY (`Wiek`) REFERENCES `_wiek` (`_wiek`) ON DELETE NO ACTION;

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
Go to the top of the page
+Quote Post
Rabarbar
post
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ń.
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: 25.08.2025 - 05:40