J'ai une table qui nécessite deux heures actuelles différentes. Tout d'abord, j'ai une procédure d'insertion qui insère le numéro d'action, msgSentFrom_F_ID, msgSentTo_M_ID et sentDate. Deuxièmement, mettez à jour le processus de mise à jour de responsDate. Mon problème est que lorsque je mets à jour AnswerDate, sentDate est mis à jour en même temps que lorsque je mets à jour ResponseDate. Qu'ai-je fait de mal? (Mon intention est que je souhaite que la date d'envoi soit l'heure actuelle à laquelle j'insère et une autre heure actuelle à laquelle je mets à jour la date de réponse.)
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());
On dirait que vous avez désactivé les variables système
explicit_defaults_for_timestamp
. La Documentation explique ce résultat : p>Grâce à la colonne
sentDate
是表中的第一个TIMESTAMP
, chaque fois que vous apportez des modifications à la ligne, elle sera automatiquement réglée sur l'heure actuelle.