Создать логический столбец в MySQL с false в качестве значения по умолчанию?

Я хочу создать таблицу в MySQL с столбцом boolean, значение по умолчанию - false. Но он принимает значение NULL как значение по умолчанию...

Ответ 1

Вы должны указать 0 (значение false) или 1 (значение true) как значение по умолчанию. Вот пример:

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

FYI: boolean является псевдонимом для tinyint(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)

FYI: мой тест был выполнен в следующей версии MySQL:

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

Ответ 2

Используйте ENUM в MYSQL для получения значения true/false и принимайте значения true/false без какого-либо дополнительного кода.

ALTER TABLE itemcategory ADD aaa ENUM ('false', 'true') NOT NULL DEFAULT 'false'