sql server 2008课件 sql server SQL Server课件

? SQL Server自动创建管理的两个表(虚拟表/逻辑表)。临时驻留内存,用于系统自动测试某些数据修改(中间)效果及设置触发器操作条件。

? Deleted 表用于存储 Delete 和 Update 语句所影响的行的副本。执行 Delete 或 Update 命令时,符合条件的行从触发器表中删除并传输到 deleted 表中。

? Inserted 表用于存储 Insert 和 Update 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。

? Update事务视为先删除后插入;首先旧行被复制到 deleted 表中,而后新行被复制到触发器表和 inserted 表中。

? 只能在触发器中使用,否则会导致“对象名无效”错误。

测试:对northwind数据库shippers表创建After触发器,检验在执行Insert、Update和Delete命令时deleted和Inserted表的变化。 Create trigger ship_chage on shippers

For insert, update, delete

As

Select * from deleted

Select * from inserted

验证:

select * from shippers

Insert into shippers values('feiniao','0335-12345679')

Update shippers set companyname='kuaima' where shipperid=3 Delete from shippers where shipperid=4

触发器的嵌套

一个触发器执行操作时引发了另一个触发器,称为~。

触发器的应用

例(P.184)对Orders表填写订单信息时,只填写客户、货主号,人为插入记录后,触发器自动填充订单日期和交货日期。

Create trigger orders_insert

On Orders

For insert

As

Update orders

set orderdate=getdate(), --自动填订单日期(当前日期)

requireddate= getdate()+7 --自动填交货日期

where orderid in (

select orderid from inserted )

Go

测试:

Insert into orders (customerID, EmployeeID)

Values(?LiLAS?,?1?) --没有填写订单日期和交货日期

Go

Select * from orders

where orderid=@@identity

Go

@@IDENTITY函数可返回最后插入的标识值。

P.184 Update触发器 :

说明:未到交货期(requiredDate)之前通过和客户协商可以延迟交货(重新修改交货日期),超过交货期仍不能按时交货的不能修改订单。(执行结果与系统日期设置、orderid值有关)

(sql实例P184update触发器.sql)

--修改如下

Create trigger Orders_update

On Orders

After Update

As

Declare @T Datetime

Select @T=Requireddate From Deleted

If @T<Getdate()

Begin

Raiserror('需求日期在当前日期之后才可修改', 16, 1)

Rollback transaction --事务回滚

End

测试 update orders set requireddate ='2009/10/31' where orderid=11066

例3 P.185自动进行级联删除:如果某订单号在订单明细表order Details全部删除,则自动在订单表orders删除对应订单。

(sql实例P185delete触发器.sql)

---修改后的触发器

Create trigger Orders_delete

On [Order Details]

After delete

As

Delete from orders Where orderID = (select distinct orderid from deleted)

测试:Select * from orders Where orderid=11011

Delete from [order details] Where orderid=11011

Select * from orders Where orderid=11011

该示例可通过参照完整性控制实现。

练习 在订单表Tab0创建一个触发器,在人为添加一个订单时(货名为name,数量为quantity),系统自动减少库存表tab01相应货品记录中的库存量(storage)(货名为goodsname)。

分析:两个表数据都必须修改;利用inserted表。

sql server 2008课件 sql server SQL Server课件

Create trigger orderinsert2

On tab0

After insert

As

Update tab01 set storage = storage - inserted.quantity

  

爱华网本文地址 » http://www.aihuau.com/a/410651/211935539410.html

更多阅读

flash课件制作教程 精 用flash制作课件

flash课件制作教程 精——简介Flash以其超强的动感画质和多事件的触发机制,为课件的制作提供了强有力的支持,利用Flash所提供的课件模板功能,可使制作课件的过程变得更加轻松,同时也提高了制作课件的效率,节省了开发时间。下面笔者就以制

课件制作教程 ppt课件制作教程视频

课件制作教程——简介PPT演示课件现在的应用越来越多了,课堂,演讲,汇报,总结,推广……在很多场合都会用到,现在笔者简单的介绍一下PPT课件的制作过程。课件制作教程——PPT课件简单制作零基础课件制作教程 1、单击左下角“开始”按钮——

《小动物过冬》评课稿 小动物过冬ppt课件

《小动物过冬》评课稿永红小学冯丽《小动物过冬》是小学语文第三册的一篇童话,主要讲小动物不同的过冬方式,课文还表现了小动物之间的相互关心。姜老师在执教时能很好地抓住这两条主线来帮助学生理解、分析课文。教学目标较明确。

声明:《sql server 2008课件 sql server SQL Server课件》为网友你真分享!如侵犯到您的合法权益请联系我们删除