當使用SQL語法UPDATE更新資料時 如何讓SQL自動備份被修改前的資料

當使用SQL語法UPDATE更新資料時 如何讓SQL自動備份被修改前的資料

當使用SQL語法UPDATE更新資料時 如何讓SQL自動備份被修改前的資料


資料來源: Copilot


MSSQL

01.創建備份表:首先,創建一個備份表來存儲被修改前的資料

CREATE TABLE BackupTable (
    ID INT PRIMARY KEY,
    Column1 NVARCHAR(50),
    Column2 NVARCHAR(50),
    -- 其他欄位
    BackupTime DATETIME DEFAULT GETDATE()
);

02.創建觸發器:創建一個觸發器,在每次執行 UPDATE 操作時,將被修改前的資料插入到備份表中。

CREATE TRIGGER trgBackupBeforeUpdate
ON OriginalTable
FOR UPDATE
AS
BEGIN
    INSERT INTO BackupTable (ID, Column1, Column2, BackupTime)
    SELECT ID, Column1, Column2, GETDATE()
    FROM deleted;
END;

MYSQL

01.創建備份表:首先,創建一個備份表來存儲被修改前的資料

CREATE TABLE BackupTable (
    ID INT PRIMARY KEY,
    Column1 VARCHAR(50),
    Column2 VARCHAR(50),
    -- 其他欄位
    BackupTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

02.創建觸發器:創建一個觸發器,在每次執行 UPDATE 操作時,將被修改前的資料插入到備份表中。

DELIMITER //

CREATE TRIGGER trgBackupBeforeUpdate
BEFORE UPDATE ON OriginalTable
FOR EACH ROW
BEGIN
    INSERT INTO BackupTable (ID, Column1, Column2, BackupTime)
    VALUES (OLD.ID, OLD.Column1, OLD.Column2, CURRENT_TIMESTAMP);
END//

DELIMITER ;

2 thoughts on “當使用SQL語法UPDATE更新資料時 如何讓SQL自動備份被修改前的資料

  1. ChatGPT 建議使用者修改前手動備份,藉此檢查WHERE的條件

    換個角度想 先用 SELECT語法先查詢 看看有幾筆資料也不錯

    INSERT INTO backup_table_name (id, column1, column2, ..., columnN, modified_at)
    SELECT id, column1, column2, ..., columnN, NOW()
    FROM your_table_name
    WHERE ;

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *