科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道轻松掌握设计 Sql Server触发器的原理

轻松掌握设计 Sql Server触发器的原理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录、更改记录或者删除记录时,当事件发生时,才被自动地激活。

作者:赛迪网 huawque 来源:天新网 2008年4月24日

关键字: 数据库 Mssql SQL SQL Server

  • 评论
  • 分享微博
  • 分享邮件

11.2 创建触发器

1、考虑为什么要设计出发器,为解决什么问题而设计?
2、应制定的内容:为什么,大家思考一下?不知道,看下面的例子,全看完!

T-SQL语句创建触发器
语法结构:

create trigger 触发器名 
on 表或视图
for|after|instead of --操作时机
insert,update,delete
as
sql语句

作业: (要求:在northwind表中建立2个表:cust_test和order_test)

cust_test: CustomerID char(5) PK  order_test:
CustomerID char(5)--对应关系
Custcity                           Orderid    PK
Custname                           OrderNames
CStatus    int                     OStatus    int --状态
Cstorage   int                     Orders     int --定购量和库存量
Cdate      date                    Odate      date--日期

作业1: 在cust_test表中建立删除触发器,实现上述2表的级联删除。
作业2: 在order_test表建立insert触发器,当向order_test表插入一行,如果cust_test表中对应

记录status值为1,说明处于准备状态不能写入该数据。

答案1:
use northwind
go
create trigger cust_orders_del1
on Cust_test
after delete
as 
delete from order_test
where CustomerID in
(select CustomerID from deleted)
go

答案2:
use northwind
go
create trigger cust_orders_ins2
on order_test
after insert
as
if (select cstatus from cust_test,inserted where 

cust_test.customerid=inserted.customerid)=1
begin
print 'The Goods is being processed'
rollback transaction
end
go

图形化操作触发器

11.3 查看触发器情况

图形化操作结合T-SQL命令

(1)sp_helptrigger 触发器名
查看触发器的名称,拥有者和五个布尔值

supdate,isdelete,isinsert,isafter,isinsteadof

(2)sp_helptext 触发器名
查看文本信息

(3)设置某一触发器的无效和重新有效

无效:
use northwind
alter table 表名
disable trigger 触发器名

重新有效:
use northwind
alter table 表名
enable trigger 触发器名

(4)删除触发器

use northwind
drop trigger 触发器名,触发器名

作业3: 在order_test表上建立一个插入触发器,在添加一个订单时,减少cust_test表的相应货物的记录的库存量。

作业4: 在order_test表上建立一个插入触发器,规定订单日期(Odate)不能手工修改。

作业5: 要求订购的物品一定要在仓库中有的,并且数量足够。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章