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: 要求订购的物品一定要在仓库中有的,并且数量足够。