SQL Server数据库中使用触发器经验谈

风雨一夜伴小楼

风雨一夜伴小楼

2016-01-29 15:45

SQL Server数据库中使用触发器经验谈,SQL Server数据库中使用触发器经验谈

触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器。可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。inserted表还允许引用由初始化INSERT语句而产生的日志数据。触发器通过检查inserted表来确定是否执行触发器动作或如何执行它。inserted表中的行总是触发器表中一行或多行的副本。

日志记录了所有修改数据的动作(INSERT、UPDATE和DELETE语句),但在事务日志中的信息是不可读的。然而,inserted表允许你引用由INSERT语句引起的日志变化,这样就可以将插入数据与发生的变化进行比较,来验证它们或采取进一步的动作。也可以直接引用插入的数据,而不必将它们存储到变量中。

示例

在本例中,将创建一个触发器。无论何时订购产品(无论何时向Order Details表中插入一条记录),这个触发器都将更新Products表中的一列(UnitsInStock)。用原来的值减去订购的数量值即为新值。

USE NorthwindCREATE TRIGGER OrdDet_InsertON [Order Details]FOR INSERTASUPDATE P SETUnitsInStock = P.UnitsInStock – I.QuantityFROM Products AS P INNER JOIN Inserted AS ION P.ProductID = I.ProductID

DELETE触发器的工作过程

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

当触发DELETE触发器后,从受影响的表中删除的行将被放置到一个特殊的deleted表中。deleted表是一个逻辑表,它保留已被删除数据行的一个副本。deleted表还允许引用由初始化DELETE语句产生的日志数据。

使用DELETE触发器时,需要考虑以下的事项和原则:

·当某行被添加到deleted表中时,它就不再存在于数据库表中;因此,deleted表和数据库表没有相同的行。

·创建deleted表时,空间是从内存中分配的。deleted表总是被存储在高速缓存中。

·为DELETE动作定义的触发器并不执行TRUNCATE TABLE语句,原因在于日志不记录TRUNCATE TABLE语句。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

示例

在本例中,将创建一个触发器,无论何时删除一个产品类别(即从Categories表中删除一条记录),该触发器都会更新Products表中的Discontinued列。所有受影响的产品都标记为1,标示不再使用这些产品了。

USE NorthwindCREATE TRIGGER Category_DeleteON CategoriesFOR DELETEASUPDATE P SET Discontinued = 1FROM Products AS P INNER JOIN deleted AS dON P.CategoryID = d.CategoryID

展开更多 50%)
分享

猜你喜欢

SQL Server数据库中使用触发器经验谈

SQLServer
SQL Server数据库中使用触发器经验谈

SQL Server 2005中使用DDL触发器监控数据库变化

编程语言 网络编程
SQL Server 2005中使用DDL触发器监控数据库变化

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server数据库安全管理经验谈

SQLServer
SQL Server数据库安全管理经验谈

SQL SERVER使用嵌套触发器

SQLServer
SQL SERVER使用嵌套触发器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

浅谈SQL Server触发器的使用

编程语言 网络编程
浅谈SQL Server触发器的使用

设计数据库之经验谈

SQLServer
设计数据库之经验谈

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

四招解决SQL Server对上亿表的排序和join的问题

四招解决SQL Server对上亿表的排序和join的问题

超炫!教你用PS绘制一枚清幽锋利的硬朗金属风字体

超炫!教你用PS绘制一枚清幽锋利的硬朗金属风字体
下拉加载更多内容 ↓