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

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

SQLite觸發(fā)器(更新之前/之后)

SQLite觸發(fā)器(更新之前/之后)指定了如何在更新數(shù)據(jù)后執(zhí)行觸發(fā)器操作。 假設(shè)有兩個(gè)表companyaudit,在這里要對(duì)在company表中的每個(gè)記錄更新時(shí)進(jìn)行審核。

創(chuàng)建company表的語(yǔ)句 -

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

創(chuàng)建一個(gè)名為audit的新表,用于在company表中有更新時(shí)插入日志消息。

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

創(chuàng)建更新后的觸發(fā)器:

使用以下語(yǔ)法創(chuàng)建名為“after_up”的觸發(fā)器,在COMPANY表上更新操作后觸發(fā)此觸發(fā)器。

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

現(xiàn)在更新一條記錄數(shù)據(jù),如下:

UPDATE COMPANY SET ADDRESS = 'Shenzhen' WHERE ID = 1;

查看已創(chuàng)建的觸發(fā)器 -

SELECT name FROM sqlite_master  WHERE type = 'trigger';

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

SQLite觸發(fā)器:在UPDATE之前

如果要?jiǎng)?chuàng)建在更新數(shù)據(jù)之前的觸發(fā)器,請(qǐng)參考以下語(yǔ)句 -

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

注意:上面的兩個(gè)關(guān)鍵字:newold,它們分別表示新插入的行記錄和表中已存在行記錄。

現(xiàn)在更新一條記錄數(shù)據(jù),如下:

UPDATE COMPANY SET ADDRESS = 'Beijing' WHERE ID = 1;

查詢審計(jì)表:audit中的記錄信息,如下所示 -

sqlite> select * from audit;
1|AFTER INSERT|2017-05-25 13:39:32
2|BEFORE INSERT|2017-05-25 13:41:50
2|AFTER INSERT|2017-05-25 13:41:50
1|AFTER UPDATE|2017-05-25 14:14:00
1|Shenzhen|2017-05-25 14:18:19 -- 使用舊行的Address值寫入
1|AFTER UPDATE|2017-05-25 14:18:19
sqlite>

執(zhí)行上面語(yǔ)句創(chuàng)建觸發(fā)器,查看上面創(chuàng)建的觸發(fā)器 -

SELECT name FROM sqlite_master  WHERE type = 'trigger';

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