我是靠谱客的博主 重要大炮,最近开发中收集的这篇文章主要介绍【SQL Server】数据库——触发器创建触发器更新触发器删除触发器禁用触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

含义

是一种表或视图执行插入(insert)、 删除(delete)、修改(update)操作时,被系统自动执行的特殊的存储过程。

与存储过程的区别

  • 存储过程的执行通过调用过程名来完成;
  • 触发器的执行不能通过名称调用完成,而在某个指定的事件执行时被激活,如insert、update、delete数据时,会自动触发与该事件相关的触发器,使其自动执行;
  • 触发器不允许带参数。

创建触发器

格式

create   trigger   触发器名  on  表名| 视图名
for   |  after   |  instead   of   [ insert ,  update,  delete ] 
as   SQL语句

insert触发器

例:在学生库的成绩表上创建1个名为tr_insert_cj的触发器,当向成绩表进行插入操作时激发该触发器,并给出提示信息“有新成绩插入到成绩表中!”

create    trigger    tr_insert_cj   on   成绩      
after   insert
as    print   ‘有新成绩信息插入到成绩表! ’
go
insert   into   成绩   values(150102', ‘202', 99)

说明: 当插入的数据违反了先前定义的约束规则时,则约束优先于触发器起作用,该插入触发器不会被激发。

delete触发器

例:在学生库的成绩表上创建1个名为tr_delete_cj的触发器,当要删除指定学生选课成绩记录时,激发该触发器,撤消删除操作,并给出提示信息“不能删除该学生的选课成绩信息!”。

create   trigger   tr_delete_cj
on   成绩
after   delete
as
rollback  transaction-- 撤消删除操作
print  ‘不能删除该学生的选课成绩的信息!’
go
delete  成绩  where   学号=150101'

update触发器

例:在“学生”表上创建名为tr_update_xs的触发器,当对该表的“姓名”列修改时激发该触发器,使用户不能修改“姓名”列。

create   trigger   tr_update_xs   on   学生  
after   update
as
if   update(姓名)
begin
   rollback   transaction         -- 撤消修改操作
   print ‘不能修改学生姓名!’
end
go
update   学生   set   姓名=‘小红’  where   姓名=‘王红’ 

注意

(1)每个触发器被激活时,系统都为它自动创建两个临时表:inserted表、deleted表。inserted表、deleted表是逻辑表,由系统来维护,用户不能对它们进行修改。
其结构与源表 (触发器作用的表)结构相同,触发器执行完成后,该临时表会自动被删除。
(2)inserted临时表的作用:
当向表中插入数据时,如果该表存在insert触发器,触发器将被触发而自动执行。此时,系统将自动创建一个与触发器表具有相同表结构的inserted临时表,新的记录被添加到触发器表和inserted 表中。
(3)deleted 临时表的作用:
当从表中删除数据时,如果该表有delete触发器,触发器将被触发而自动执行。此时,系统将自动创建一个与触发器表具有相同表结构的deleted临时表,用来保存触发器中被删除的记录。
(4)当修改表中数据时, 相当于删除一条旧的记录,添加一条新的记录,其中被删除的记录放在deleted表中,同时添加的新记录放在inserted 表中。
例:在“课程”表上创建一个触发器。当更新了某门课程的课程编号信息时,就激活触发器级联更新“成绩”表中相关成绩记录中的课程编号信息,并使用print语句返回一个提示信息。

create   trigger   tr_update_kc   on   课程    
after   update
As
if update(课程编号)
 begin
    update 成绩
    set 成绩.课程编号=(select 课程编号 from inserted)
    where 成绩.课程编号=(select 课程编号 from deleted)
 end
go
update   课程   set  课程编号=555where   课程编号=212

更新触发器

alter   trigger    触发器名
……

删除触发器

drop   trigger    触发器名[,…n]

禁用触发器

Alter  table 表名 {enable | disable} trigger {all | 触发器名[,…n]}

最后

以上就是重要大炮为你收集整理的【SQL Server】数据库——触发器创建触发器更新触发器删除触发器禁用触发器的全部内容,希望文章能够帮你解决【SQL Server】数据库——触发器创建触发器更新触发器删除触发器禁用触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部