Giải pháp: DEFAULT CURRENT_TIMESTAMP
Khi tạo bảng, đặt default cho cột TIMESTAMP là CURRENT_TIMESTAMP (hoặc NOW()).
Ví dụ minh họa
Tạo bảng với default timestamp
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ShippingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Chèn không chỉ định ShippingDate
INSERT INTO DemoTable() VALUES();
Kết quả
+----+---------------------+ | Id | ShippingDate | +----+---------------------+ | 1 | 2019-06-08 21:35:58 | +----+---------------------+
Trong MySQL Workbench (GUI)
- Mở Table Editor (chuột phải bảng → Alter Table)
- Chọn cột TIMESTAMP
- Trong tab Columns, cột Default/Expression:
- Chọn/nhập:
CURRENT_TIMESTAMP - Apply → Finish
Các biến thể DEFAULT TIMESTAMP
| Cú pháp | Hành vi |
|---|---|
TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Tạo: set NOW(); Update: không đổi |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Tạo: NOW(); Update: NOW() |
TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP | Tạo: 0; Update: NOW() |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Chỉ set khi INSERT không cung cấp giá trị |
Lưu ý quan trọng
- Chỉ một cột TIMESTAMP mỗi bảng có DEFAULT/ON UPDATE CURRENT_TIMESTAMP (trước MySQL 5.6.5)
- MySQL 5.6.5+: Cho phép nhiều cột TIMESTAMP với DEFAULT
DATETIMEcũng hỗ trợ DEFAULT CURRENT_TIMESTAMP từ MySQL 5.6.5- Timezone: TIMESTAMP chuyển UTC ↔ session timezone, DATETIME không
Cập nhật thủ công với NOW()
-- Insert có chỉ định INSERT INTO DemoTable(ShippingDate) VALUES(NOW()); -- Update UPDATE DemoTable SET ShippingDate = NOW() WHERE Id = 1;
MySQL Workbench: Chạy query
- Ctrl+T: Mở tab query mới
- Viết SQL
- Ctrl+Enter: Execute selection
- Kết quả hiển thị dưới dạng grid