我有一個(gè)表格需要兩個(gè)不同的當(dāng)前時(shí)間。 首先,我有一個(gè)插入過(guò)程,用於插入actionnumber、msgSentFrom_F_ID、msgSentTo_M_ID 和sentDate。 其次,更新respondDate的更新過(guò)程。 我的問(wèn)題是,當(dāng)我更新respondDate時(shí),sentDate將更新為我更新respondDate時(shí)的相同時(shí)間。我哪裡做錯(cuò)了? (我的目的是我希望發(fā)送日期是我插入時(shí)的當(dāng)前時(shí)間,以及我更新回應(yīng)日期時(shí)的另一個(gè)當(dāng)前時(shí)間。)
CREATE TABLE IF NOT EXISTS actions ( actionnumber INT AUTO_INCREMENT PRIMARY KEY, msgSentFrom_F_ID INT, msgSentTo_M_ID INT, sentDate TIMESTAMP, respondDate TIMESTAMP NULL, FOREIGN KEY (msgSentFrom_F_ID) REFERENCES femaleUsers(femaleuserId) FOREIGN KEY (msgSentTo_M_ID) REFERENCES maleUsers(maleuserId) ); DELIMITER // create procedure (param_F_ID INT,param_M_ID INT,Sdate TIMESTAMP) BEGIN INSERT INTO actions (msgSentFrom_F_ID, msgSentTo_M_ID, sentDate) VALUES (param_F_ID,param_M_ID,Now()); END; // DELIMITER ; CALL insert_actions ('5','5',NOW()); DELIMITER // create procedure update_respondDate (param_ActionNum INT, param_respondDate TIMESTAMP) BEGIN UPDATE actions set respondDate = param_respondDate WHERE actionnumber = param_ActionNum; END; // DELIMITER ; CALL update_respondDate('6',NOW());
聽起來(lái)您禁用了系統(tǒng)變數(shù) explicit_defaults_for_timestamp
。 文檔解釋了此結(jié)果: p>
由於 sentDate
是表中的第一個(gè) TIMESTAMP
列,因此每當(dāng)您對(duì)該行進(jìn)行任何變更時(shí),它都會(huì)自動(dòng)設(shè)定為目前時(shí)間。