SQL 更新时将旧数据保存到另一个 table
SQL on UPDATE save old data into another table
我有两个 table:players
和 history_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;//
我有两个 table:players
和 history_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;//