FeiYan

网站导航

搜索

腾讯微博 新浪微博 FeelBLog 开源中国社区

使用触发器删除SQL Server关联数据

2012-09-14 19:34:47     0个评论     4173次访问

自定义函数在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  触发器 

本文地址:使用触发器删除SQL Server关联数据

相关文章

2010-01-14:SQL Server 2008安装过程图解

2013-02-25:C#+SQL Sever的大学生就业招聘系统

0 Comments »

发布评论

最新评论

  1. 像蛋哥一样抛弃博客好多年的天涯像蛋哥一样抛弃博客好多年的天涯

    蛋哥,PHP-7.1中mcrypt扩展已被废弃了,还用途广泛个蛋蛋啊,赶紧更新吧。

  2. SpecsSpecs

    不错~~

  3. zhyzhy

    我也遇到这个问题 不知道是swf 、jcrop 、 uploadify 还是浏览器缓存