问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问SQL触发器用在什么地方? ...求解...

发布网友 发布时间:2022-04-24 01:43

我来回答

4个回答

热心网友 时间:2022-04-10 21:55

先说触发器,再说好处和坏处
-------------------------------
触发器,主要是用来同步更新数据的,杂乱枯燥的文章不给你转了,看起来累,举个例子吧:

假设有两个表,tab_1 , tab_2
再假设两个表里都有“人员性别”这个字段

tab_1的数据例如: 张三```男```1978`````2002
tab_2的数据例如: 张三```男```销售科```科长

我要改tab_1中张三的性别为“女”的话,那么tab_2的性别也该改为“女”,对吧,总不能两张表的性别不同吧。

如果不用触发器的话,我们就要改完tab_1,再去改tab_2,使性别都变成女

于是这里可以用到触发器了:

原理是:当tab_1中某人的性别发生变更后,数据库自动将tab_2的性别进行同步修改

触发器也可以这样应用:
1、当删除tab_1中的某人信息时,触发器一并删除该人的tab_2中的数据
2、在tab_1中新插入一个人员时,触发器在tab_2中一并新增一条该人的数据

===================================================================================
所以在你建立触发器时,就要指定该触发器的用途,是同步更新,还是删除、插入,由你指定。

基本的语法规则是:
create trigger 触发器名称(你自己命名的) on 表 for 用途(delete|update|insert)
as
delete|update|insert语句
----------------------------------------------------------------------
例如:
create trigger tri_A on tab_1 FOR DELETE
AS
delete tab_2 from deleted where tab_2.id = deleted.id;

意思是:在tab_1表上,建立触发器(tri_A),用于删除该表的数据时触发一个事务,什么事务呢?——删除tab_2中的该编号人员的记录。

FOR INSERT、FOR UPDATE分别是建立用于“插入记录”、“更新数据”的触发器,例子里的FOR DELETE是用于触发“删除记录”的。

这里还要看清楚,那个delete语句中的表,是from deleted哦,还有,where子句的tab_2.id = deleted.id,不是tab_2.id = tab_1.id哦,deleted.id是指你刚删除的那条记录的id(而update、insert,都用inserted.id)
===================================================================================

好处:相对于外部程序、存储过程,触发器可以更快更高效的维护数据
坏处:(我自己的经验)触发器要用的恰到好处,一个大型应用里,触发器越少越好,触发器会使编程时源码的结构*打乱,为将来的程序修改、源码阅读带来很大不便。

热心网友 时间:2022-04-10 23:13

触发器一般用到比如投票系统这些需要随即改编数据的地方,一个人投进1号票,数据库写下1号票,不过在写下的同事,另外一个表,也就是总票数这个数据在另一个表中也要改变,这时候我们就需要用触发器

热心网友 时间:2022-04-11 00:48

一楼得写的太详尽了
我都没补充的了

热心网友 时间:2022-04-11 02:39

触发器的主要用处是对满足条件的事件进行捕获,然后触发某些处理,
以下是联机帮助,其实很有作用的,^_^
CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让。
若要检索表或视图中的数据,用户必须在表或视图中拥有 SELECT 语句权限。若要更新表或视图的内容,用户必须在表或视图中拥有 INSERT、DELETE 和 UPDATE 语句权限。
如果视图中存在 INSTEAD OF 触发器,用户必须在该视图中有 INSERT、DELETE 和 UPDATE 特权,以对该视图发出 INSERT、DELETE 和 UPDATE 语句,而不管实际上是否在视图上执行了这样的操作。
示例
A. 使用带有提醒消息的触发器
当有人试图在 titles 表中添加或更改数据时,下例将向客户端显示一条消息。
说明 消息 50009 是 sysmessages 中的用户定义消息。有关创建用户定义消息的更多信息,请参见 sp_addmessage。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'reminder' AND type = 'TR')
DROP TRIGGER reminder
GO
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE
AS RAISERROR (50009, 16, 10)
GO
呵呵,希望能有帮助,^_^
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...Exception EoleSysError in module PlayGame.exe at 000AAA95,怎么... ...出现Exception EOleSysError in module ATT.exe at 000BCA21.拒绝... 求大神帮忙: Exception EOleSysError in module.1.多元函数概念(1... windows7ExceptionEOlesysErrorinmoduleexeat000649E0找不到指定模块... 南京新街口适合情侣吃饭的地方,南京钟山景区露台酒店价格 c语言中如何计算a+ b的和 题目:有用户输入两个整数a,b 求a和b之间的数的累加和,包括a和b 用C语... 有请高手解答,平手盘是什么意思,我认为打平多 平手盘什么意思平手盘指的是什么 食品添加剂安全使用指南目录 谁能告诉我sql 的触发器到底能干什么?我看教程的看晕了,谁能用通俗点... SQL触发器写法 请问sql触发器insert触发器如何使用? SQL触发器的语法 wind10打印机共享怎么设置 一台电脑如何配置内网和外网wind10 win10怎么在“此电脑”添加新的文件夹 wind10 我的电脑怎么显示出来 自己的wind10笔记本如何在办公室连上有线打印机? 有谁知道怎么把两台Wind10家庭版系统的电脑连接到一台打印机上? 霍山石斛怎么吃?多少钱一斤 霍山枫斗米斛怎么吃? 九斛之尊霍山石斛鲜条怎么吃? 支付宝芝麻信用分达到650分怎么用 怎么才能增加芝麻信用度? 芝麻分600到650要多久 我想学厨师,家常菜的那种,应该去哪学? 芝麻信用 差22分上650,怎么提升?以及为什么借呗开不了?个人信息都填好了啊 芝麻信用分650难达到吗 麻辣烫的做法,有几种 SQL 触发器 应用 sql server 触发器 中 for 怎么使用 请教如何使用SQL的触发器 数据库是MSSQLSERVER (1)使用SQL语句创建触发器 SQL Server数据库中的游标和触发器有哪些作用,什么情况下可以使用触发... sql里,instead of触发器是什么意思,如何使用? 如何在C#中使用带有 触发器 的SQL语句 sql中的触发器该不该使用? 录屏大师录完的视频怎么分享给QQ好友? 录屏大师怎么分享给qq好友 录屏大师录完的视频怎么才能分享给其他人啊? ARN9嵌入式系统设计与开发应用目录的介绍 录屏大师的视频怎么发给微信好友? arm9嵌入式开发板能实现哪些功能 什么录屏软件可以分享给qq好友 ARM9嵌入式开发平台是做什么用的? 嵌入式应用开发入门,ARM9,应用软件开发,opengl es 王者荣耀保存了视频,本地回放怎么分享给QQ好友啊 ARM9嵌入式系统设计基础教程的介绍 ARM9嵌入式系统设计的编辑推荐