Я хочу створити таблицю в MySQL зі booleanстовпцем, значенням якого за замовчуванням є false. Але він приймає NULL за замовчуванням ...
Я хочу створити таблицю в MySQL зі booleanстовпцем, значенням якого за замовчуванням є false. Але він приймає NULL за замовчуванням ...
Відповіді:
Ви повинні вказати 0(означає false) або 1(що означає істину) як за замовчуванням. Ось приклад:
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)
Використовуйте ENUM в MySQL для істинного / хибного значення, яке дає та приймає значення true / false без зайвого коду.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Ви можете встановити значення за замовчуванням під час створення, наприклад:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Якщо ви робите булевий стовпець як недійсний, то значення 'default' за замовчуванням є false; не потрібно чітко вказувати це.