Sử dụng ALTER TABLE ... CHANGE COLUMN để đặt lại DEFAULT cho cột (phải khai báo lại toàn bộ định nghĩa cột).
Cú pháp
ALTER TABLE table_name CHANGE COLUMN column_name column_name data_type NOT NULL DEFAULT default_value;
Ví dụ: Đặt DEFAULT CURRENT_TIMESTAMP cho TIMESTAMP
mysql> CREATE TABLE DefaultDemo (ArrivalTime TIMESTAMP); Query OK, 0 rows affected (0.65 sec) mysql> DESC DefaultDemo; +-------------+-----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-----------+------+-----+---------+-------+ | ArrivalTime | timestamp | YES | | NULL | | +-------------+-----------+------+-----+---------+-------+
Thay đổi:
mysql> ALTER TABLE DefaultDemo CHANGE ArrivalTime ArrivalTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; Query OK, 0 rows affected (1.71 sec)
Kiểm tra (chèn không giá trị):
mysql> INSERT INTO DefaultDemo VALUES (); Query OK, 1 row affected (0.15 sec) mysql> SELECT * FROM DefaultDemo; +---------------------+ | ArrivalTime | +---------------------+ | 2018-12-07 11:31:00 | +---------------------+
Lưu ý quan trọng
CHANGE COLUMNyêu cầu khai báo lại tên cột, kiểu dữ liệu, NULL/NOT NULL, DEFAULT đầy đủ.- MySQL 8.0.13+ hỗ trợ
ALTER TABLE ... ALTER COLUMN ... SET DEFAULT(chuẩn SQL, ngắn gọn hơn):
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'new_default';
- Để xóa DEFAULT:
ALTER COLUMN column_name DROP DEFAULT(MySQL 8.0.13+). - Cột
TIMESTAMPđầu tiên trong bảng tự động cóDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPnếu không chỉ định rõ (tùy phiên bản/sql_mode).