Sử dụng ALTER TABLE ... MODIFY COLUMN để định nghĩa lại cột với DEFAULT mới.
Tạo bảng có DEFAULT 'John'
mysql> CREATE TABLE DemoTable (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(20) DEFAULT 'John'
-> );
Kiểm tra DEFAULT ban đầu
mysql> DESC DemoTable;
+----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | John | | +----------+-------------+------+-----+---------+----------------+
Chèn hàng không cung cấp UserName
mysql> INSERT INTO DemoTable VALUES();
mysql> SELECT * FROM DemoTable;
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | +--------+----------+
Đổi DEFAULT thành 'Chris'
mysql> ALTER TABLE DemoTable MODIFY UserName VARCHAR(20) DEFAULT 'Chris';
Query OK, 0 rows affected (0.19 sec)
Kiểm tra DEFAULT mới
mysql> DESC DemoTable;
+----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | Chris | | +----------+-------------+------+-----+---------+----------------+
Chèn hàng mới — tự động lấy 'Chris'
mysql> INSERT INTO DemoTable VALUES();
mysql> SELECT * FROM DemoTable;
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Chris | +--------+----------+
Lưu ý quan trọng
- Hàng cũ không thay đổi — chỉ ảnh hưởng INSERT mới không cung cấp giá trị
MODIFYgiữ nguyên tên cột,CHANGEcho phép đổi tên- Để xóa DEFAULT:
ALTER TABLE DemoTable MODIFY UserName VARCHAR(20) DEFAULT NULL; - Kết hợp
NOT NULL:MODIFY UserName VARCHAR(20) NOT NULL DEFAULT 'Chris'
Xem DEFAULT hiện tại qua INFORMATION_SCHEMA
SELECT COLUMN_NAME, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'DemoTable' AND TABLE_SCHEMA = DATABASE();