防止在更新一个列的NOW()时,两个NOW()列同时更新的方法
P粉043566314
P粉043566314 2024-04-04 21:34:34
0
1
390

我有一个表需要两个不同的当前时间。 首先,我有一个插入过程,用于插入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粉043566314
P粉043566314

全部回复(1)
P粉574695215

听起来您禁用了系统变量 explicit_defaults_for_timestamp文档解释了此结果: p>

由于 sentDate 是表中的第一个 TIMESTAMP 列,因此每当您对该行进行任何更改时,它都会自动设置为当前时间。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!