Tôi muốn tạo một bảng trong MySQL với một booleancột có giá trị mặc định là false. Nhưng nó chấp nhận NULL như mặc định ...
Tôi muốn tạo một bảng trong MySQL với một booleancột có giá trị mặc định là false. Nhưng nó chấp nhận NULL như mặc định ...
Câu trả lời:
Bạn phải chỉ định 0(có nghĩa là sai) hoặc 1(có nghĩa là đúng) làm mặc định. Đây là một ví dụ:
create table mytable (
mybool boolean not null default 0
);
FYI: booleanlà một bí danh cho tinyint(1).
Đây là bằng chứng:
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: Thử nghiệm của tôi đã được thực hiện trên phiên bản MySQL sau:
mysql> select version();
+----------------+
| version() |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Sử dụng ENUM trong MySQL cho đúng / sai, nó cung cấp và chấp nhận các giá trị đúng / sai mà không cần thêm bất kỳ mã nào.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Bạn có thể đặt giá trị mặc định tại thời điểm tạo như:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Nếu bạn đang tạo cột boolean là null thì giá trị 'mặc định' mặc định là sai; bạn không cần phải xác định rõ ràng.