suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Methode, um zu verhindern, dass zwei NOW()-Spalten gleichzeitig aktualisiert werden, wenn NOW() einer Spalte aktualisiert wird

Ich habe einen Tisch, der zwei unterschiedliche aktuelle Zeiten erfordert. Erstens habe ich eine Einfügeprozedur, die Aktionsnummer, msgSentFrom_F_ID, msgSentTo_M_ID und sentDate einfügt. Zweitens aktualisieren Sie den Aktualisierungsprozess von „RespondDate“. Mein Problem ist, dass sendDate beim Aktualisieren von „responderDate“ auf den gleichen Zeitpunkt aktualisiert wird wie beim Aktualisieren von „responderDate“. Was habe ich falsch gemacht? (Meine Absicht ist, dass das Sendedatum die aktuelle Uhrzeit sein soll, wenn ich es einfüge, und eine andere aktuelle Uhrzeit, wenn ich das Antwortdatum aktualisiere.)

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粉043566314234 Tage vor436

Antworte allen(1)Ich werde antworten

  • P粉574695215

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

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

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

    Antwort
    0
  • StornierenAntwort