SQLite觸發器(刪除之前/之後)

SQLite觸發器(刪除之前/之後)指定如何在刪除數據後執行觸發器。假設有兩個表:companyaudit

創建company表的語句如下 -

CREATE TABLE company(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

創建audit表的語句如下 -

CREATE TABLE audit(
    EMP_ID INT NOT NULL,
    BEFORE_VAL TEXT NULL,
    ACTION_TYPE TEXT NULL,
    ENTRY_DATE TEXT NOT NULL
);

創建刪除後觸發器:

在刪除操作後,使用以下語法在company表上創建名為“after_del”的觸發器,當刪除company表中的一條記錄成功之後,就會將這條刪除的名稱記錄到audit表中。

CREATE TRIGGER after_del  AFTER DELETE
ON COMPANY
BEGIN
INSERT INTO AUDIT(EMP_ID, BEFORE_VAL, ACTION_TYPE, ENTRY_DATE) VALUES (old.ID, old.name, 'AFTER DELETE', datetime('now'));
END;

先插入一條數據,以供後面刪除使用 -


INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (1, 'Maxsu', 24, 'Haikou', 40000.00);

-- 刪除記錄,觸發上面定義的觸發器

delete from company where id=1;

-- 查詢刪除記錄的執行結果

select * from company;

-- 查詢刪除記錄之後的審計記錄情況

select * from audit;

完整的執行過程如下圖中所示 -


上一篇: SQLite觸發器(更新之前/之後) 下一篇: SQLite快速入門