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

Chèn giá trị rỗng vào cột TIMESTAMP DEFAULT CURRENT_TIMESTAMP trong MySQL

Hành vi cột TIMESTAMP DEFAULT CURRENT_TIMESTAMP khi INSERT không chỉ định giá trị

Khi không cung cấp giá trị cho cột TIMESTAMP có DEFAULT CURRENT_TIMESTAMP, MySQL tự động ghi ngày giờ hiện tại.

Tạo bảng

mysql> create table DemoTable ( 
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    UserLoginDate timestamp default current_timestamp 
); 
Query OK, 0 rows affected (0.61 sec)

Chèn bản ghi không chỉ định cột timestamp

mysql> insert into DemoTable values(); 
mysql> insert into DemoTable values(); 
mysql> insert into DemoTable values(); 
mysql> insert into DemoTable(UserId) values(null);

Kết quả

+--------+---------------------+ 
| UserId | UserLoginDate       | 
+--------+---------------------+ 
| 1      | 2019-11-03 12:55:44 | 
| 2      | 2019-11-03 12:55:45 | 
| 3      | 2019-11-03 12:55:46 | 
| 4      | 2019-11-03 12:56:06 | 
+--------+---------------------+

Giải thích:

  • Mỗi INSERT không chỉ định UserLoginDate → tự động lấy CURRENT_TIMESTAMP tại thời điểm thực thi
  • Thời gian tăng dần theo thứ tự thực thi (giây khác nhau)
  • INSERT INTO DemoTable(UserId) VALUES(NULL) cũng kích hoạt default cho UserLoginDate

Đặc điểm TIMESTAMP vs DATETIME:

Ứng dụng: Tự động ghi log thời gian tạo/cập nhật bản ghi mà không cần code ứng dụng can thiệp.

Đặc điểmTIMESTAMPDATETIME
Khoảng thời gian1970-20381000-9999
Múi giờChuyển đổi UTC ↔ session timezoneLưu nguyên giá trị nhập
DEFAULT CURRENT_TIMESTAMPHỗ trợ sẵnMySQL 5.6.5+ hỗ trợ
ON UPDATE CURRENT_TIMESTAMPHỗ trợMySQL 5.6.5+ hỗ trợ