Rumah  >  Soal Jawab  >  teks badan

Kaedah untuk menghalang dua lajur NOW() daripada dikemas kini pada masa yang sama apabila mengemas kini NOW() satu lajur

Saya mempunyai jadual yang memerlukan dua masa semasa yang berbeza. Pertama, saya mempunyai prosedur sisipan yang memasukkan nombor tindakan, msgSentFrom_F_ID, msgSentTo_M_ID dan sentDate. Kedua, kemas kini proses kemas kini respondDate. Masalah saya ialah apabila saya mengemas kini respondDate, sentDate dikemas kini pada masa yang sama seperti semasa saya mengemas kini respondDate. Apa yang saya buat salah? (Niat saya ialah saya mahu tarikh yang dihantar ialah masa semasa saya memasukkan, dan masa semasa yang lain apabila saya mengemas kini tarikh respons.)

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 hari yang lalu362

membalas semua(1)saya akan balas

  • P粉574695215

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

    Bunyi seperti anda melumpuhkan pembolehubah sistem explicit_defaults_for_timestamp . Dokumentasi menerangkan keputusan ini:

    Oleh kerana lajur sentDate 是表中的第一个 TIMESTAMP, setiap kali anda membuat sebarang perubahan pada baris, ia akan ditetapkan secara automatik kepada masa semasa.

    balas
    0
  • Batalbalas