SQLite触发器使用
SQLite的触发器是数据库的回调函数,它会自动执行/指定的数据库事件发生时调用。以下是关于SQLite的触发器的要点:
语法创建触发器的基本语法如下: CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name ON table_name BEGIN -- Trigger logic goes here.... END; 在这里,event_name可能是INSERT,DELETE和UPDATE操作所提到的表table_name数据库。您可以选择指定FOR EACH ROW表名后。 以下是语法上创建一个触发器UPDATE操作一个或多个指定一个表列如下: CREATE TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF column_name ON table_name BEGIN -- Trigger logic goes here.... ; 例子让我们考虑一个情况下,我们要保持审核COMPANY表中的每一条记录被插入我们新创建如下(如果已经拥有它,删除COMPANY表)试用: sqlite> 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 在这里,ID是的审计记录ID,EMP_ID的ID将来自COMPANY表和日期将保持COMPANY表时的记录将被创建时间戳。所以,现在让我们创建一个触发器,COMPANY表如下:>CREATE TRIGGER audit_log AFTER INSERT ON COMPANY BEGIN INSERT INTO AUDIT(EMP_ID ENTRY_DATE) VALUES new.ID datetime'now')); ;
datetime('now') 为经度0时区的时间,因此北京时间还得 加8
现在,我们将开始实际工作中,让我们开始COMPANY表中插入记录,这将导致在AUDIT表中创建审计日志记录。因此,让我们创建一个COMPANY表记录如下: > INSERT INTO COMPANY (IDNAMEAGEADDRESSSALARY) VALUES 1 'Paul'32'California'20000.00 This will create one record in COMPANY table,which is as follows:ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 以上SQLite的语句会列出只有一个条目如下: name ---------- audit_log 如果要列出特定表上的触发器,然后使用AND子句及表名如下: 'trigger' AND tbl_name 'COMPANY' 以上SQLite语句也会列出只有一个条目如下:name ---------- audit_log
转载网站:http://www.yiibai.com/sqlite/sqlite_triggers.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |