2010-02-08 15 views

Odpowiedz

152

Należy podać wartość 0 (co oznacza wartość false) lub 1 (co oznacza wartość true) jako wartość domyślną. Oto przykład:

create table mytable (
    mybool boolean not null default 0 
); 

FYI: boolean jest aliasem dla tinyint(1).

Oto dowód:

mysql> create table mytable (
    ->   mybool boolean not null default 0 
    -> ); 
Query OK, 0 rows affected (0.35 sec) 

mysql> insert into mytable() values(); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from mytable; 
+--------+ 
| mybool | 
+--------+ 
|  0 | 
+--------+ 
1 row in set (0.00 sec) 

FYI: Moje testy przeprowadzono na następujących wersji MySQL:

mysql> select version(); 
+----------------+ 
| version()  | 
+----------------+ 
| 5.0.18-max-log | 
+----------------+ 
1 row in set (0.00 sec) 
+3

Ładne potwierdzenie –

+0

Czy to prawda? W skryptach powłoki 0 może oznaczać udane lub "prawdziwe". Byłoby miło, gdyby MySQL rzeczywiście zwróciło "true" i "false", tak abyśmy nie musieli polegać na kodzie decydującym o wartości. – tudor

+3

Nawiasem mówiąc, ponieważ boolean jest aliasem dla tinyint (1), oznacza to, że możesz ustawić wartości logiczne na liczby inne niż 0 i 1 i nie będzie narzekać! Oznacza to, że jeśli przypadkowo zwiększysz lub zmniejszysz pole, możesz zepsuć swoje dane! : -O Zalecam używanie zamiast tego pola ENUM. – tudor

8

Wykorzystanie ENUM w MySQL dla true/false daje i przyjmuje prawdziwe/false wartości bez żadnego dodatkowego kodu.

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false' 
Powiązane problemy