数据库 触发器有什么用

请各位大侠帮忙.我发现一些个数据库都有这个概念,请问能否用通俗易懂的方式给解释下啊... 请各位大侠帮忙.我发现一些个数据库都有这个概念,请问能否用通俗易懂的方式给解释下啊 展开
 我来答
匿名用户
2013-09-08
展开全部
触发器
触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。

然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。
具体举例:
1. 在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。
2. 在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。
触发器简介:
触发器是一种特殊类型的过程。与普通过程不同的是,过程需要用户显式地调用才执行,而触发器则是当某些事件发生时,由Oracle自动执行。
触发器主要由如下几个部分组成:
触发事件:
触发条件:
触发对象:
触发操作:
编写触发器时,需要注意以下几点:
触发器不接受参数。
一个表上最多可以有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。还需要注意,各个触发器之间不能有矛盾。
在一个表上的触发器越多,对在该表上的DML操作性能影响就越大。
触发器最大为32KB。如果确实需要,可以先建立过程,然后在触发器中用CALL语句调用。
在DML触发器中只能使用DML语句(select,insert,update,delete)。
在系统触发器中只能包含DDL语句(create,alter,drop)。
触发器中不能包含事务控制语句(commit,rollback,savepoint)。因为触发器是触发语句的一部门,触发语句被提交或回退时,触发器也就被提交或回退了。
在触发器主体中调用的任何过程、函数都不能使用事务控制语句。
在触发器主体中不能声明任何long和blob变量。新值new、旧值old也不能指向表中的任何long和blog列
不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用都有较大区别。
</B>
上海华然企业咨询
2024-10-21 广告
上海华然企业咨询有限公司专注于AI与数据合规咨询服务。我们的核心团队来自头部互联网企业、红圈律所和专业安全服务机构。凭借深刻的AI产品理解、上百个AI产品的合规咨询和算法备案经验,为客户提供专业的算法备案、AI安全评估、数据出境等合规服务,... 点击进入详情页
本回答由上海华然企业咨询提供
匿名用户
2013-09-08
展开全部
触发器-从字面上理解就是某操作执行会触发. 触发器也是特殊的存储过程,我的理解就是提高数据的完整性.举个简单的例子,一这学生表里有这个学生的学号,姓名,另一张学生的选课表,如果用户修改了学生表中的学生姓名,那么学生选课表中的学生姓名也要修改过来..如果在数据库中建立一个这修改的触发器,那么 这个不再手动修改,否则选课表中的姓名要手工修改..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-08
展开全部
我就给你解释一下实际场景吧
比如你有两个表 A 和 B
A表有ID 和 NAME两列
B表有ID,PLAY,NAMEID三列,A与B没有关联
如果你想删除B表的内容,但是又同时想删除A表中A.ID=B.NAMEID
那么你就要写两条语句
如果使用触发器
就只用写删除B表的内容语句,一旦删除内容,则触发器设定的表规则被触发,那么A表的相关内容也一起删除了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式