Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay đổi giá trị mặc định (DEFAULT) của cột MySQL


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 COLUMN yê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_TIMESTAMP nếu không chỉ định rõ (tùy phiên bản/sql_mode).