它指定如何插入数据后创建触发器。假设我们有两个表公司治理与审计,在这里我们要保持审计审判对每条记录被插入在新创建的公司表。如果你已经有一个公司表,删除并重新创建。
COMPANY表:
CREATE TABLE COMPANY(
ID INT PRIMARY KEYNOT NULL,NAMETEXTNOT NULL,AGEINTNOT NULL,ADDRESSCHAR(50),SALARYREAL
);
创建新表命名审计,其中log信息将被插入每当有公司表中的新记录的条目:
审计表:
CREATE TABLE AUDIT(
EMP_ID INT NOT NULL,ENTRY_DATE TEXT NOT NULL
);
【SQLite After Insert触发器】CREATE TRIGGER插入后:
使用以下语法创建一个名为“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。
现在,插入在公司表中的一些记录,它会创建审计表审计日志记录。
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1,'Albert',22,'Goa',40000.00);
同时记录将在审计表中创建。这只是因为触发,这是我们在INSERT操作上创建COMPANY表。让我们来看看在审计表。
SELECT * FROM AUDIT;
如何列出触发器
你可以通过使用SQLITE_MASTER语句列表下来触发器。
SELECT name FROM sqlite_master
WHERE type = 'trigger';
输出:
你可以看到触发器的名称。
你也可以通过使用AND子句名单下跌对特定表触发。
SELECT name FROM sqlite_master
WHERE type = 'trigger' AND tbl_name = 'COMPANY';
如果你想插入数据前创建触发器:
CREATE TRIGGER befor_ins BEFORE INSERT
ON COMPANY
BEGIN
INSERT INTO AUDIT(EMP_ID,ENTRY_DATE) VALUES (new.ID,datetime('now'));
END;
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2,'Sonoo',28,'Mumbai',35000.00);
你可以看到,触发器已经创建,所以你不能插入记录。
检查创建触发器:
在这里你可以同时看到创建的触发器。
推荐阅读
- SQLite After Delete触发器
- SQLite的COUNT函数
- SQLite After Update触发器
- SQLite的GROUP BY子句
- SQLite的now()函数
- SQLite的datetime()函数
- SQLite的外连接查询
- SQLite的juliandday()函数
- SQLite的date()函数