我想知道是否有方法可以更新mysql中的记录,并且 仍然可以保留记录的前一个(更新前)数据,并且还保留更新历史记录计数器。更新记录并保留mysql中的先前记录数据
我应该能够使用上次更新记录作为真实记录。
帮助赞赏。
谢谢。
我想知道是否有方法可以更新mysql中的记录,并且 仍然可以保留记录的前一个(更新前)数据,并且还保留更新历史记录计数器。更新记录并保留mysql中的先前记录数据
我应该能够使用上次更新记录作为真实记录。
帮助赞赏。
谢谢。
我认为你不需要更新记录,而是Insert
另一个记录,所以你以前的记录将不会被触及。
更新1
您需要为此创造两个表。第一个是data
这是记录,另一个是保存它的表格发生变化。例如,
CREATE TABLE dataList
(
ID INT NOT NULL,
Name VARCHAR(30),
-- other fields... ,
CONSTRAINT dl_pk PRIMARY KEY ID)
);
CREATE TABLE versionList
(
ID INT AUTO_INCREMENT,
DataID INT,
VersionID INT,
DateChanged datetime,
CONSTRAINT vl_pk PRIMARY KEY (ID),
CONSTRAINT vl_fk FOREIGN KEY (DataID)
REFERENCES dataList(ID)
);
INSERT INTO dataList(ID, Name) VALUES (1,'hello');
INSERT INTO dataList(ID, Name) VALUES (2,'world');
INSERT INTO versionList(DataID, VersionID, DateChanged) VALUES (1,1,'2011-01-01');
INSERT INTO versionList(DataID, VersionID, DateChanged) VALUES (1,2,'2011-02-01');
INSERT INTO versionList(DataID, VersionID, DateChanged) VALUES (1,3,'2011-03-01');
INSERT INTO versionList(DataID, VersionID, DateChanged) VALUES (2,1,'2012-01-01');
INSERT INTO versionList(DataID, VersionID, DateChanged) VALUES (2,2,'2012-02-01');
如果您想保留历史记录,更新将不起作用。您需要插入,因为更新会覆盖以前的数据。我建议在创建记录的日期时间中添加一个字段'Timestamp'。这样,您的真实记录就是具有最高时间戳的记录。较旧的是历史。我将这种方法用于有一个变化字段的小表。考虑到数据冗余,可能不是考虑更大表格的最佳方法。 – Hazaart
感谢伟大的洞察力。对于更大的桌子,你会有什么建议? – watkib