更新ParentId时,自动更新子级的ParentIds

2018-06-22 06:10:33来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 1 --====================================
 2 --  更新ParentId时,自动更新子级的ParentIds
 3 --====================================
 4 
 5 ALTER TRIGGER UpdateParentIds ON S_User 
 6     FOR update
 7 AS 
 8 
 9 DECLARE @id int                      --当前用户的ID
10 DECLARE @parentId int                --当前用户的ParentId
11 DECLARE @parentIds varchar(500)      --更新后的ParentIds
12 DECLARE @count int                   --当前用户的子级数量
13 SELECT @parentId =i.ParentId,@id=i.ID FROM inserted i    --记录下当前用户的ID及ParentId
14 PRINT '@parentId:'+convert(varchar,@parentId)
15 PRINT '@id:'+convert(varchar,@id)
16 SELECT @parentIds =convert(varchar,u.ID)+','+ u.ParentIds FROM S_User u where u.ID=@parentId  --根据ParentId 拼接最新的ParentIds
17 PRINT '@parentIds:'+convert(varchar,@parentIds)
18 SET  XACT_ABORT   ON
19 IF UPDATE(ParentId)
20 BEGIN
21    PRINT '更新beigin'
22    UPDATE S_User SET ParentIds = @parentIds WHERE ID=@id
23    SELECT @count=COUNT(*) FROM S_User WHERE ParentId = @id
24    IF(@count>0)
25    BEGIN
26     UPDATE S_User SET ParentId = @id WHERE id in (SELECT id FROM S_User WHERE ParentId = @id)
27    END
28    PRINT '更新end'
29 END
30 GO

自己写自己用,顺便记录下来备忘,涉及到触发器递归触发。

注:数据库-》属性-》选项-》递归触发器已启用 设为True(默认False),不然无法递归触发

不晓得有没有更好的办法。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ASP.NET 4.5 尚未在 Web 服务器上注册。您需要手动将 Web 服务器

下一篇:解决“在上下文中找不到 owin.Environment 项”