2013-12-11 15 views
9

Sử dụng mysql, tôi đang cố gắng tạo cột dấu thời gian từ cột ngày và cột thời gian. Nếu cột ngày hoặc thời gian chứa giá trị NULL, mysql sẽ tự động đặt giá trị tương ứng trong cột dấu thời gian thành current_timestamp. Có cách nào để làm cho nó mặc định cho một NULL, thay vì dấu thời gian hiện tại?dấu thời gian mysql để mặc định null, không current_timestamp

Cái gì như:

ALTER TABLE customers ADD s_timestamp TIMESTAMP; 
UPDATE customers 
SET s_timestamp = timestamp(s_date,s_time) DEFAULT NULL; 

Trả lời

23

Sử dụng truy vấn này để thêm cột của bạn

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL; 

Và, nếu bạn muốn nhận được dấu thời gian hiện tại chỉ cập nhật:

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP; 
-1

Tôi nghĩ điều này nên làm việc:

ALTER TABLE customers ADD COLUMN s_timestamp TIMESTAMP DEFAULT NULL; 
+1

Không. Các cột 'TIMESTAMP' có [hành vi tự động đặc biệt] (http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html) khi' NULL' được chèn vào, vì vậy nếu bạn thực sự muốn có thể để thiết lập một điểm đánh dấu null, bạn phải rõ ràng làm cho cột nullable. –

+0

thử nghiệm với postgres - nó làm việc – niyou

+0

Lưu ý đúng, nhưng câu hỏi là về hành vi MySQL. –

Các vấn đề liên quan