SQLite 数据删除前后的触发器

本文介绍了 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;

完整的执行过程如下图中所示 -

上一篇 下一篇


推荐文章

评论
说点什么吧?

发表评论

取消回复
  最新文章