首页 SQLite触发器

SQLite触发器

举报
开通vip

SQLite触发器 SQLite 触发器的 SQL 语法 CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [database-name .] table-name trigger-action sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name...

SQLite触发器
SQLite 触发器的 SQL 语法 CREATE TRIGGER sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [database-name .] table-name trigger-action sql-statement ::= CREATE [TEMP | TEMPORARY] TRIGGER trigger-name INSTEAD OF database-event ON [database-name .] view-name trigger-action database-event ::= DELETE | INSERT | UPDATE | UPDATE OF column-list trigger-action ::= [ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN expression ] BEGIN trigger-step ; [ trigger-step ; ]* END trigger-step ::= update-statement | insert-statement | delete-statement | select-statement CREATE TRIGGER 语句用于向数据库 schema 中添加触发器。触发器是一些在特定 的数据库事件(database-event) 发生时自动进行的数据库操作 (trigger-action). 触发器可由在特殊 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 上执行的 DELETE, INSERT, UPDATE 等语句触发,或 UPDATE 表中特定的字段时触发。 现在 SQLite 仅支持 FOR EACH ROW 触发器,不支持 FOR EACH STATEMENT 触发。 因此可以不用明确说明 FOR EACH ROW .FOR EACH ROW 的意思是由 trigger-steps 说明的 SQL 语句可能在(由 WHEN 子句决定的)数据库插入, 更改或删除的每一行 触发 trigger. WHEN 子句和 trigger-steps 可以使用"NEW.column-name"和"OLD.column-name" 的引用形式访问正在被插入,更改或 删除的行的元素,column-name 是触发器 关联的表中的字段名。OLD 和 NEW 引用只在触发器与之相关的 trigger-event 处可用,例如: INSERT NEW 可用 UPDATE NEW 和 OLD 均可用 DELETE OLD 可用 当使用 WHEN 子句,trigger-steps 只在 WHEN 子句为真的行执行。不使用 WHEN 时则在所有行执行。 trigger-time 决定了 trigger-steps 执行的时间,它是相对于关联行的插入, 删除和修改而言的。 作为的一部分 trigger-step 的 UPDATE 或 INSERT 可以使用 ON CONFLICT 子句。 但若触发 trigger 的语句使用了 ON CONFLICT 子句,则覆盖前述的 ON CONFLICT 子句所定义的冲突处理 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 关联表被撤销时触发器被自动删除。 不仅在表上,在视图上一样可以创建触发器,在 CREATE TRIGGER 语句中使用 INSTEAD OF 即可。 若视图上定义了一个或多个 ON INSERT, ON DELETE, ON UPDATE 触发器,则相应地对视图执行 INSERT,DELETE 或 UPDATE 语句 不会出错,而会 触发关联的触发器。视图关联的表不会被修改。(除了由触发器进行的修改操作)。 Example: 假设"customers"表存储了客户信息,"orders"表存储了订单信息,下面的触发 器确保当用户改变地址时所有的 关联订单地址均进行相应改变: CREATE TRIGGER update_customer_address UPDATE OF address ON customers BEGIN UPDATE orders SET address = new.address WHERE customer_name = old.name; END; 定义了该触发器后执行如下语句: UPDATE customers SET address = ’1 Main St.’ WHERE name = ’Jack Jones’; 会使下面的语句自动执行: UPDATE orders SET address = ’1 Main St.’ WHERE customer_name = ’Jack Jones’; 注意,目前在有INTEGER PRIMARY KEY域的表上触发器可能工作不正常。若BEFORE 触发器修改了一行的 INTEGER PRIMARY KEY 域,而该域将由触发该触发器的语 句进行修改,则可能根本不会修改该域。 可以用 PRIMARY KEY 字段代替 INTEGER PRIMARY KEY 字段来解决上述问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 一个特殊的 SQL 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数 RAISE()可用于触发器程序,使用如下语法: raise-function ::= RAISE ( ABORT, error-message ) | RAISE ( FAIL, error-message ) | RAISE ( ROLLBACK, error-message ) | RAISE ( IGNORE ) 当触发器程序执行中调用了上述前三个之一的形式时,则执行指定的 ON CONFLICT 进程(ABORT, FAIL 或者 ROLLBACK) 且终止当前查询,返回一个 SQLITE_CONSTRAINT 错误并说明错误信息。 当调用 RAISE(IGNORE),当前触发器程序的余下部分,触发该触发器的语句和任 何之后的触发器程序被忽略并且 不恢复对数据库的已有改变。 若触发触发器的 语句是一个触发器程序本身的一部分,则原触发器程序从下一步起继续执行。 使用 DROP TRIGGER 删除触发器。
本文档为【SQLite触发器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_137481
暂无简介~
格式:pdf
大小:73KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2013-11-28
浏览量:7