Kaedah untuk menghalang dua lajur NOW() daripada dikemas kini pada masa yang sama apabila mengemas kini NOW() satu lajur
P粉043566314
P粉043566314 2024-04-04 21:34:34
0
1
430

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粉043566314
P粉043566314

membalas semua(1)
P粉574695215

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

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan