SQLite觸發(fā)器(刪除之前/之后)指定如何在刪除數(shù)據(jù)后執(zhí)行觸發(fā)器。假設(shè)有兩個表:company和audit。
創(chuàng)建company表的語句如下 -
CREATE TABLE company(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
創(chuàng)建audit表的語句如下 -
CREATE TABLE audit(
EMP_ID INT NOT NULL,
BEFORE_VAL TEXT NULL,
ACTION_TYPE TEXT NULL,
ENTRY_DATE TEXT NOT NULL
);
創(chuàng)建刪除后觸發(fā)器:
在刪除操作后,使用以下語法在company表上創(chuàng)建名為“after_del”的觸發(fā)器,當(dāng)刪除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;
先插入一條數(shù)據(jù),以供后面刪除使用 -
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Maxsu', 24, 'Haikou', 40000.00);
-- 刪除記錄,觸發(fā)上面定義的觸發(fā)器
delete from company where id=1;
-- 查詢刪除記錄的執(zhí)行結(jié)果
select * from company;
-- 查詢刪除記錄之后的審計記錄情況
select * from audit;
完整的執(zhí)行過程如下圖中所示 -
