使用触发器删除SQL Server关联数据
2012-09-14 19:34:47 0个评论 4537次访问
自定义函数在SQL Server中应用非常广泛,最常见的是使用存储过程分页,当然这和SQL Server本身的特点是有关系的。下面这个触发器是用于删除数据库中一个表中的数据时,同时删除和这条数据有关的其他数据,例如物理删除users表中的某位用户时,希望同时可以删除和这个用户相关的所有信息,用户订单、用户统计等等(当然也可以使用多表关联删除)。
-- 把DBName改为数据库名称 USE DBName GO IF EXISTS(SELECT 1 FROM sys.triggers WHERE name='DelCascadeData') DROP Trigger DelCascadeData GO CREATE TRIGGER DelCascadeData ON [dbo].[users] INSTEAD OF DELETE AS BEGIN DECLARE @uUid INT --赋值,获取刚才删除的用户id SELECT @uUid=uid FROM users --挨个删除 BEGIN TRAN T_DELETE_USER BEGIN TRY DELETE FROM user_table1 WHERE uid=@uUid DELETE FROM user_table2 WHERE uid=@uUid DELETE FROM user_table3 WHERE uid=@uUid DELETE FROM user_table4 WHERE uid=@uUid -- 其他管理数据 DELETE FROM users WHERE uid=@uUid COMMIT T_DELETE_USER END TRY BEGIN CATCH ROLLBACK T_DELETE_USER END CATCH
这个算是SQL Server触发器的基本用法,注意这里使用的是“INSTEAD OF DELETE”,所以最后还需要执行一遍删除users表。
文章标签: SQL Server 触发器
相关文章
2010-01-14:SQL Server 2008安装过程图解
2013-02-25:C#+SQL Sever的大学生就业招聘系统
0 Comments »