我想知道是否有方法可以更新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