在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ SQLite觸發(fā)器(插入之前/之后)
SQLite觸發(fā)器(刪除之前/之后)
SQLite Union All操作符
SQLite快速入門
SQLite LIMIT子句
SQLite更新查詢
SQLite插入查詢
SQLite創(chuàng)建數(shù)據(jù)庫
SQLite datetime()函數(shù)
SQLite now函數(shù)和時間格式化
SQLite左連接
SQLite AVG()函數(shù)
SQLite交叉連接(Cross Join)
SQLite運(yùn)算符
SQLite ORDER BY子句
SQLite聚合函數(shù)
SQLite Union操作符
SQLite是什么?
SQLite安裝
PHP連接SQLite數(shù)據(jù)庫
SQLite命令大全
SQLite LIKE子句
SQLite OR子句
SQLite內(nèi)連接(Inner Join)
SQLite日期和時間
SQLite WHERE子句
SQLite刪除表
Python連接SQLite數(shù)據(jù)庫
SQLite刪除觸發(fā)器
SQLite優(yōu)點(diǎn)和缺點(diǎn)
SQLite連接(JOIN子句)
SQLite數(shù)據(jù)類型
SQLite外連接(Outer Join)
SQLite COUNT()函數(shù)
SQLite主鍵
SQLite觸發(fā)器(插入之前/之后)
SQLite HAVING子句
SQLite IN運(yùn)算符
SQLite選擇查詢
SQLite date()函數(shù)
SQLite MAX()函數(shù)
SQLite刪除查詢
SQLite分離數(shù)據(jù)庫
SQLite教程
SQLite GLOB子句
SQLite MIN()函數(shù)
SQLite導(dǎo)入數(shù)據(jù)
SQLite GROUP BY子句
SQLite表達(dá)式
SQLite語法大全
SQLite外鍵
SQLite觸發(fā)器
SQLite導(dǎo)出數(shù)據(jù)
SQLite juliandday()函數(shù)
SQLite創(chuàng)建表
Java連接SQLite數(shù)據(jù)庫
SQLite SUM()函數(shù)
SQLite特性/為什么要使用SQLite?
SQLite觸發(fā)器(更新之前/之后)
SQLite strftime()函數(shù)日期日間格式化
SQLite附加/選擇數(shù)據(jù)庫
SQLite DISTINCT子句
SQLite歷史
SQLite time()函數(shù)

SQLite觸發(fā)器(插入之前/之后)

SQLite插入之前或之后觸發(fā)器指定了如何在插入數(shù)據(jù)后創(chuàng)建觸發(fā)器。 假設(shè)有兩個表:COMPANYAUDIT,在這里要對向COMPANY表中插入的每條記錄進(jìn)行審計(jì)。如果您已經(jīng)有創(chuàng)建過一個COMPANY表,請將其刪除并重新創(chuàng)建。

COMPANY的創(chuàng)建語句 -

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的新表,只要在向COMPANY表中插入新記錄,就會插入日志消息:

AUDIT的創(chuàng)建語句 -

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

創(chuàng)建以上兩個表,如下圖所示 -

SQLite觸發(fā)器:AFTER INSERT

在插入操作后,使用以下語法是在COMPANY表上創(chuàng)建名為“audit_log”的觸發(fā)器。

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

這里,IDAUDIT表行記錄的ID,EMP_ID是來自COMPANY表的ID,DATE字段是用于在COMPANY表中創(chuàng)建記錄時保留時間戳。

現(xiàn)在向COMPANY表中插入一些記錄,觸發(fā)器將自動在AUDIT表中創(chuàng)建審核日志記錄。

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

執(zhí)行上面語句后,同時會在AUDIT表中創(chuàng)建一條記錄。 這只是因?yàn)樵?code>COMPANY表上的INSERT操作上創(chuàng)建的觸發(fā)器。現(xiàn)在查詢AUDIT表中的記錄數(shù)據(jù)。

SELECT * FROM AUDIT;

執(zhí)行上面語句,結(jié)果如下所示 -

如何列出/查看觸發(fā)器?

可以使用查詢語句從sqlite_master表中來查詢列出/查看觸發(fā)器。

SELECT name FROM sqlite_master  
WHERE type = 'trigger';

執(zhí)行上面語句,得到以下結(jié)果 -

從上面結(jié)果中,可以看到觸發(fā)器的名稱。還可以使用AND子句列出特定表上的觸發(fā)器。

SELECT name FROM sqlite_master  
WHERE type = 'trigger' AND tbl_name = 'COMPANY';

執(zhí)行上面查詢,得到以下結(jié)果 -

SQLite觸發(fā)器:BEFORE INSERT

如果要在插入數(shù)據(jù)之前創(chuàng)建觸發(fā)器,可以使用以下語句 -

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

創(chuàng)建完成上面的觸發(fā)器后,現(xiàn)在向COMPANY表中插入一條數(shù)據(jù)記錄。

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)  
VALUES (2, 'Minsu', 28, 'Guangzhou', 35000.00);
``

現(xiàn)在,已經(jīng)創(chuàng)建了兩個觸發(fā)器,一個是**BEFORE INSERT**,另一個是:**AFTER INSERT**,因此在向`COMPANY`表插入第二條記錄時,`AUDIT`表中有生成兩個記錄。

```sql
SELECT * FROM AUDIT;

檢查創(chuàng)建的觸發(fā)器:

SELECT name FROM sqlite_master  
WHERE type = 'trigger' AND tbl_name = 'COMPANY';

執(zhí)行上面語句,得到以下結(jié)果 -

sqlite> SELECT name FROM sqlite_master
   ...> WHERE type = 'trigger' AND tbl_name = 'COMPANY';
audit_log
befor_ins
sqlite>

以上面查詢的結(jié)果中,可以看到已創(chuàng)建的兩個觸發(fā)器。