千家信息网

数据库中触发器

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,触发器其是一种特殊的存储过程。一般的存储过程是通过存储过程名直接调用,而触发器主要是通过事件(增、删、改)进行触发而被执行的。其在表中数据发生变化时自动强制执行。常见的触发器有两种:after(for
千家信息网最后更新 2025年01月21日数据库中触发器

触发器

  其是一种特殊的存储过程。一般的存储过程是通过存储过程名直接调用,而触发器主要是

  通过事件(增、删、改)进行触发而被执行的。其在表中数据发生变化时自动强制执行。

  常见的触发器有两种:after(for)、instead of,用于insert、update、delete事件。

  after(for) 表示执行代码后,执行触发器

  instead of 表示执行代码前,用已经写好的触发器代替你的操作

触发器语法:

  create trigger 触发器的名字 on 操作表

  for|after instead of

  update|insert|delete

  as

  SQL语句

触发器的特征:


1、触发器是在对表进行增、删、改时,自动执行的存储过程。触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行。

2、触发器是一特殊的事务单元,可以引用其他表中的列执行特殊的业务规则或数据逻辑关系。当出现错误时,可以执行rollback transaction操作将整个触发器以及触发它的T-SQL语句一并回滚(不需显示声明begin transaction)。


3、每个触发器将用到的两个临时表:

deleted 临时表:用于临时存放被删除的记录行副本(包括delete和update语句所影响的数据行);
注意:被删除的记录行,首先从原始表中删除,并保存到触发器表。然后从触发器表中删除,再保存到deleted表。

inserted临时表:用于临时存放插入的记录行副本(包括insert和update语句所影响的数据行);

deleted表和inserted表的特征:
> 这两个表的表结构与该触发器作用的表相同;
> 这两个表是逻辑表,并且由系统管理;
> 这两个表是动态驻留在内存中的(不是存储在数据库中),当触发器工作完成后,它们也被删除;
> 这两个表是只读的,即只能运用select语句查看(用户不能直接更改);

4、所创建的触发器(insert、delete、update)是在原表数据行已经修改完成后再触发。所以,触发器是在约束检查之后才执行。

--禁止用户插入数据(实际上是先插入,然后立刻将其删除!)

  create trigger tr_insert on bank

  for --for表示执行之后的操作

  insert --即先执行了插入操作,同时在临时表中保存了插入记录

  as

  --执行完插入之后,在新生成的表中将刚刚插入的那条记录删除,

   --而此时得到的刚刚插入的记录的id是通过临时表 inserted得到的

  delete * from bank where cid=(select cid from inserted)

  生成上面的触发器后,当用户再输入insert语句后就见不到效果了!

  如:insert into bank values('0004',10000),是插入不进数据库的。


--删除谁就让谁的账户加上10元

  create trigger tr_dalete on bank

  instead of

  delete

  as

  update bank balance=balance+10 where cid=(select cid from deleted)

  生成这个触发器之后,当用户输入delete语句后,对应的那个id不但没有被删除掉,而且他的账户增加了10元

  如:delete from bank where cid='0002',执行完这句话后,编号为0002的账户会增加10元

参考文章:http://www.cnblogs.com/xugang/archive/2010/02/20/1669619.html

触发器 数据 语句 两个 存储 用户 过程 特殊 事件 是在 账户 数据库 业务 代码 副本 特征 规则 逻辑 强制 影响 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 口碑好的网络技术供应 云防护节点和服务器不通 农村网络安全工作责任制 在学生选课数据库中 修改数据库密码不重启 我的世界1.17电脑版怎么加服务器 网络安全靠大家三年级手抄报 软件开发交付是交几个税 网络技术学习需要多久 网络技术需要学编译原理吗 郑州新维度网络技术有限公司 海康威视软件开发语言和框架 数据库管理员35岁 网络技术发展的三个阶段 大华监控存储服务器安装教程 网络安全 班会策划 天津科技大学互联网大赛 消防网络安全教育教案 平安家校教师端网络安全等级 品质软件开发有哪些 北京通信软件开发厂家现货 宣传部 网络安全存在问题 维护校园网络安全班会主题 我的世界1.17电脑版怎么加服务器 对数据库进行维护 企业局域网网络技术现状 三级网络技术必练的 珠海网络安全教育平台登录 天津网络安全博览会时间 聚焦网络技术
0