首頁  >  問答  >  主體

防止在更新一個列的NOW()時,兩個NOW()列同時更新的方法

我有一個表格需要兩個不同的當前時間。 首先,我有一個插入過程,用於插入actionnumber、msgSentFrom_F_ID、msgSentTo_M_ID 和sentDate。 其次,更新respondDate的更新過程。 我的問題是,當我更新respondDate時,sentDate將更新為我更新respondDate時的相同時間。我哪裡做錯了? (我的目的是我希望發送日期是我插入時的當前時間,以及我更新回應日期時的另一個當前時間。)

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());

P粉043566314P粉043566314196 天前364

全部回覆(1)我來回復

  • P粉574695215

    P粉5746952152024-04-05 00:06:07

    聽起來您禁用了系統變數 explicit_defaults_for_timestamp文檔解釋了此結果:

    由於 sentDate 是表中的第一個 TIMESTAMP 列,因此每當您對該行進行任何變更時,它都會自動設定為目前時間。

    回覆
    0
  • 取消回覆