2011-10-10 42 views
7

Tôi có một cập nhật cột trong bảng và loại là dấu thời gian. Tôi đặt giá trị deault bằng cách sử dụng menu thả xuống phpmyadmin để CURRENT_TIMESTAMP. Nhưng sau đó khi tôi chạy sql UPDATE x SET ... nó cập nhật cột dấu thời gian nếu chỉ có một thay đổi trong bất kỳ cột nào. Những gì tôi muốn đạt được là cho dù có một sự thay đổi hay không thiết lập thời gian hiện tại mỗi khi sql cập nhật chạy. Có cách nào để làm điều đó trong mysql hoặc tôi cần phải đặt update_date một cách rõ ràng mỗi khi cập nhật được gọi là?Cột dấu thời gian MYSQL tự động cập nhật ngay cả khi không có thay đổi?

Cảm ơn bạn

Trả lời

6

Bạn cần cập nhật rõ ràng cột. Từ hướng dẫn MySQL, TIMESTAMP properties:

Các tính năng tự động cập nhật vào TIMESTAMP cột, nếu có một, được tự động cập nhật vào dấu thời gian hiện tại khi giá trị của bất kỳ cột khác ở hàng được thay đổi từ giá trị hiện tại của nó. Nếu tất cả các cột khác được đặt thành giá trị hiện tại, cột TIMESTAMP không thay đổi. Cập nhật tự động không áp dụng nếu cột TIMESTAMP được gán rõ ràng một giá trị khác NULL.

Mỏ nhấn mạnh.

+0

Tôi chỉ có một cột dấu thời gian trong hàng. Vì vậy, bạn sayin g tôi nên thay đổi giá trị mặc định thành null và sau đó cập nhật nó một cách rõ ràng mỗi khi sql được chạy hoặc tôi có thể để kiểu mặc định là CURRENT_TIMESTAMP? – akd

+1

Điều khác là khi tôi chạy mã này không có gì được cập nhật "UPDATE x SET update_date = NOW()" từ mysql_query? điều gì sẽ là lý do? – akd

+0

Mẹo rất hữu ích và khéo léo! –

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