SQL 更新时将旧数据保存到另一个 table

SQL on UPDATE save old data into another table

我有两个 table:playershistory_of_players

我想为球员创造某种历史,所以如果有人在球员 table 中更新 'club',我希望将旧数据(旧俱乐部)保存到 [=15] =] 与 'player_ID''old_club''year'(实际年份)。

有一段时间没有使用 MySQL 但这应该是您正在寻找的(如果播放器中始终只有一行 table 每个 player_ID) :

delimiter //
CREATE TRIGGER historise BEFORE UPDATE ON players
  FOR EACH ROW
     BEGIN
       INSERT INTO history_of_players (player_ID, old_club, year)
       SELECT player_ID, old_club, year FROM players
       WHERE player_ID = OLD.player_ID;
     END;//
delimiter ;

您可能希望在 players table 上创建触发器。例如:

DELIMITER $$
CREATE TRIGGER playersHistoryTrigger
AFTER UPDATE ON players
FOR EACH ROW BEGIN
    INSERT INTO playersHistory
    VALUES (NEW.ID, NEW.Name, ...);
END$$
DELIMITER ;

这可以通过触发器来完成。

delimiter //
CREATE TRIGGER playerup BEFORE UPDATE ON players
    FOR EACH ROW
    BEGIN
        INSERT INTO history_of_players (player_ID, old_club, date)
        VALUES (NEW.player_ID, OLD.club, CURDATE());
    END;//