基于CTE设计的多行记录更新触发器应用研究
2017-06-05邓景顺
邓景顺
基于CTE设计的多行记录更新触发器应用研究
邓景顺
(山西大同大学数学与计算机学院,山西大同 037009)
使用SQL Server触发器可以级联更新数据库中相关表记录,现有文献中,对SQL Server触发器及应用案例的描述,多数只针对数据表中一个记录更新所激发的触发器,不能适于多行记录更新激发的触发器。在SQL Server触发器的更新语句中使用CTE,可以减少中间数据和临时数据表的存储管理,设计更简练,执行效率更高。本文通过SQLServer开发实例,改进算法,使用CTE,设计了针对多行记录更新的DML触发器,级联更新相关数据表,实现数据完整性,适用性和实用性较强。
SQL Server;触发器;多行记录更新;CTE;完整性
0 引言
CTE(Common Table Expression 公用表表达式)是从SQL Server2005开始使用的一项功能。CTE用于存储一个临时的结果集,在SELECT、INSERT、DELETE、UPDATE语句使用时都可以建立一个CTE。CTE相当于一个临时表,它的生命周期在该批处理语句执行完后就结束。
CTE语法格式:
WITH <公用表表达式>[(列名[,…])]
AS (CTE查询定义)
SELECT|INSERT|DELETE|UPDATE
其中UPDATE的语法格式为:
UPDATE 表名SET列名=表达式[,…]
[FROM 数据集[,…]][ WHERE 查询条件]
FROM子句中的数据集可以使用公用表表达式[1]。
结合约束和规则,使用触发器可以实现复杂的数据业务,执行复杂的数据约束,级联修改数据库中的所有相关表,能更有效地保证数据完整性[2-3]。
多行记录更新是指一个更新语句或操作,向数据表中插入、删除或更新多个记录,现有文献的触发器设计多针对一个记录更新设计,适于多个记录更新的触发器设计案例很少。将CTE用于触发器的数据更新语句中,利用CTE的数据集,进行中间数据的处理,语句更加清晰简练,设计过程更加方便,触发器执行效率更高。……
