我使用的mysql有兩列在一個表中一個是date_added
,另一個是date_updated
,是否有可能讓數據輸入的日期記錄在date_added
以及它的日期更新記錄在date_updated
而不更改date_added
列。mysql的日期和時間列
1
A
回答
2
在5.6之前,MySQL只支持一個TIMESTAMP
字段自動初始化。這可以是「創建」或「更新」列,但不能同時存在。
對於自動初始化 '創造' 欄目中,使用:
CREATE TABLE ...
date_added TIMESTAMP DEFAULT CURRENT_TIMESTAMP
對於自動初始化 '更新' 一欄,使用
CREATE TABLE ...
date_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
不幸的是,你不能兼得。如果你想同時擁有自動初始化,您將需要使用觸發器:
CREATE TABLE ...
date_added TIMESTAMP, -- doesn't auto-initialize
date_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
,然後設置一個TRIGGER
更新date_added
領域:
DROP TRIGGER IF EXISTS tablename_before_insert;
DELIMITER //
CREATE
DEFINER = CURRENT_USER
TRIGGER tablename_before_insert
BEFORE INSERT ON
tablename -- insert your table name here
FOR EACH ROW
BEGIN
IF IFNULL(NEW.date_added, 0) <= 0
THEN
SET NEW.date_added = NOW();
END IF;
END;
//
的
IF IFNULL(NEW.date_added, 0) <= 0
如果需要,可以使用
子句來覆蓋值date_added
。
0
當然。只需在查詢中使用正確的列名即可。在執行INSERT時填充date_added
字段。在更新時只需更新date_updated
字段。除非您在查詢中或在觸發器中明確這樣做,否則不會受到影響。但這顯然是在你的掌控之中。
+0
那麼,什麼數據類型我會用每一個和默認值,因爲使用相同的,所以他們都改變 – dames 2012-08-03 15:50:01
相關問題
- 1. mysql日期和日期時間問題
- 2. PHP MYSQL日期,時間,日期時間和時間戳
- 3. mysql和python日期時間
- 4. PHP日期時間和mysql
- 5. MySQL和日期時間
- 6. 兩列之間的Mysql日期時間
- 7. MySQL日期和時間間隔 - 日期間的記錄
- 8. Mysql日期/日期時間列和Java持久性
- 9. 將時間和日期轉換爲mysql日期時間
- 10. 日期時間vs日期和時間Mysql
- 11. 從日期時間格式中分離日期和時間mysql
- 12. MySQL日期時間和當前日期時間函數
- 13. PHP日期時間和MySQL日期時間
- 14. 骨料日期時間的日期和時間列拆分
- 15. 結合使用日期時間的日期和時間列
- 16. MySQL的日期時間列操作
- 17. Mysql不在時間和日期之間
- 18. MySql,結合日期和時間列到時間戳
- 19. 日期和時間之間的MySQL檢查2列隊
- 20. Mysql的日期和時間差
- 21. MySQL的搜索日期和時間
- 22. mysql表中的空日期和時間
- 23. mysql中的時間和日期劃分
- 24. MySQL的日期和時間過濾器
- 25. 將日期時間列拆分成日期和時間Python
- 26. PHP MySQL的日期時間
- 27. MySQL中的日期時間
- 28. MySQL的日期時間
- 29. 與MySQL的日期時間
- 30. MySQL的日期時間CASE
Ø哇驚人非常感謝,我會嘗試這一點,並使用'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'的日期date_updated列IM和IM DATE_ADDED讓你知道外面的事情,但是是的,它確實對你所說的事情看起來100%合乎邏輯 – dames 2012-08-03 15:51:53