2010-02-08 3 views

답변

152

기본값으로 0 (false를 의미) 또는 1 (true를 의미)을 지정해야합니다.

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

가 참고 : booleantinyint(1)의 별칭입니다 다음은 예입니다.

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) 

참고 : 내 테스트는 MySQL의 다음 버전에 행해졌 다 : 여기

는 증거입니다

mysql> select version(); 
+----------------+ 
| version()  | 
+----------------+ 
| 5.0.18-max-log | 
+----------------+ 
1 row in set (0.00 sec) 
사실에 대한 MySQL의에서
+3

니스 확인 –

+0

그렇지 않습니까? 쉘 스크립팅에서 0은 성공 또는 '참'을 의미 할 수 있습니다. MySQL이 실제로 'true'와 'false'를 반환하면 값의 의미를 결정하는 코드에 의존 할 필요가 없기 때문에 좋을 것입니다. – tudor

+3

덧붙여 부울은 tinyint (1)의 별칭이므로 부울 값을 0과 1 이외의 숫자로 설정할 수 있으며 불평하지 않습니다! 즉 실수로 필드를 증가 시키거나 감소 시키면 데이터가 엉망이 될 수 있습니다. : -O 대신 ENUM 필드를 사용하는 것이 좋습니다. – tudor

8

사용 ENUM/거짓이 제공하고 진실을 받아 추가 코드없이/false 값.

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false' 
관련 문제