Heim > Fragen und Antworten > Hauptteil
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粉5746952152024-04-05 00:06:07
听起来您禁用了系统变量 explicit_defaults_for_timestamp
。 文档解释了此结果: p>
由于 sentDate
是表中的第一个 TIMESTAMP
列,因此每当您对该行进行任何更改时,它都会自动设置为当前时间。