SQLite - After Insert(插入后)

SQLite - After Insert(插入后) 首页 / SQLite入门教程 / SQLite - After Insert(插入后)

它指定插入数据后如何创建触发器。假设无涯教程有两个表COMPANY和AUDIT,在这里要为新创建的COMPANY表中插入的每条记录保持审计试用。如果已经有了COMPANY表,则将其删除并重新创建。

COMPANY表:

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

创建一个名为AUDIT的新表,在COMPANY表中有新记录的条目时,将在其中插入日志消息:

无涯教程网

审核表:

CREATE TABLE AUDIT(
    EMP_ID INT NOT NULL,
    ENTRY_DATE TEXT NOT NULL
); 

在插入后创建触发器:

插入操作之后,使用以下语法在COMPANY表上创建名为" audit_log"的触发器。

CREATE TRIGGER audit_log AFTER INSERT 
ON COMPANY
BEGIN
INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));
END;

在这里,ID是审计记录ID,EMP_ID是来自公司表的ID,并且在公司表中创建记录时,日期将保留时间戳。

Sqlite Trigger after insert 1

现在在公司表中插入一些记录,它将在AUDIT表中创建审核日志记录。

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Albert', 22, 'Goa', 40000.00);
Sqlite Trigger after insert 2

同时,将在AUDIT表中创建一条记录。这仅仅是由于触发器,无涯教程在COMPANY表上的INSERT操作中创建了触发器。看一下AUDIT表。

SELECT * FROM AUDIT; 
Sqlite Trigger after insert 3

如何列出触发 

您可以使用sqlite_master语句列出触发器。

SELECT name FROM sqlite_master
WHERE type = 'trigger'; 

输出:

Sqlite Trigger after insert 4

您可以看到触发器的名称。

您还可以使用AND子句在特定表上列出触发器。

SELECT name FROM sqlite_master
WHERE type = 'trigger' AND tbl_name = 'COMPANY';  
Sqlite Trigger after insert 5

如果要在插入数据之前创建触发器,请执行以下操作:

CREATE TRIGGER befor_ins BEFORE INSERT 
ON COMPANY
BEGIN
INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));
END;
Sqlite Trigger after insert 6
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Sonoo', 28, 'Mumbai', 35000.00); 

您可以看到已创建触发器,以便您无法插入记录。

Sqlite Trigger after insert 7

检查已创建的触发器: 

Sqlite Trigger after insert 8

在这里,您可以看到两个创建的触发器。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

SQL必知必会 -〔陈旸〕

即时消息技术剖析与实战 -〔袁武林〕

小马哥讲Spring核心编程思想 -〔小马哥〕

技术管理案例课 -〔许健〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

结构思考力 · 透过结构看思考 -〔李忠秋〕

云时代的JVM原理与实战 -〔康杨〕

AI大模型企业应用实战 -〔蔡超〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)