2009-11-20 35 views
50

Tôi có một bảng có cột loại timestamp mặc định current_timestamp và cập nhật thành current_timestamp trên mọi bản cập nhật.Làm cách nào để thay đổi giá trị mặc định của bảng mysql?

Tôi muốn xóa tính năng "cập nhật" trên cột này. Làm cách nào để viết câu lệnh thay đổi?

tôi thử như sau:

ALTER TABLE mytable alter column time set DEFAULT now(); 

nhưng điều này đã không làm việc.

+0

Bạn chắc chắn không sử dụng trình kích hoạt để cập nhật? –

+0

Câu hỏi này nên di chuyển sang StackExcange: Quản trị viên cơ sở dữ liệu –

Trả lời

75

Pete đã gần đúng nhưng sử dụng cú pháp sai cho 'thay đổi':

ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

Thông báo bạn phải lặp lại tên cột. Ngoài ra, hãy chắc chắn rằng bạn đang sử dụng backticks thay vì dấu nháy đơn để thoát khỏi thời gian tên cột, điều này ngăn không cho nó được hiểu là kiểu cột mysql của thời gian.

Bằng cách chỉ định DEFAULT trong số CURRENT_TIMESTAMP, MySQL sẽ không tự động cập nhật cột nữa. Từ số MySQL Manual:

Với mệnh đề DEFAULT CURRENT_TIMESTAMP và không có mệnh đề ON UPDATE, cột có dấu thời gian hiện tại cho giá trị mặc định của nó nhưng không được cập nhật tự động.

9

Bạn không thể AFAIK sử dụng các hàm như NOW() làm mặc định.

Hãy thử

ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

(Edited thêm thoát và sử dụng thứ hai của tên trường)

+0

Có các thông tin sau: mysql ALTER TABLE tin nhắn THAY ĐỔI thời gian TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; ERROR 1064 (42000): Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho cú pháp đúng để sử dụng gần 'NOT NULL DEFAULT CURRENT_TIMESTAMP' tại dòng 1 mysql ALTER TABLE message THAY ĐỔI cột time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; ERROR 1064 (42000): Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho cú pháp đúng để sử dụng gần 'NOT NULL DEFAULT CURRENT_TIMESTAMP' tại dòng 1 – Tihom

+0

Xin lỗi quên để thêm thoát, và tên trường đến hai lần. – Pete

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