同时插入多条数据

bj2008huwei 2011-10-07 11:09:20
表如下:

表一:TDOA_WRRolePageType
RoleCode WRPageType SortNo
10---------1-----------3
10---------2-----------1
10---------3-----------2
10---------4-----------4
20---------1-----------5
20---------2-----------6
30---------3-----------7
40---------2-----------8
40---------4-----------9

表二:TDOA_WRRole
RoleCode-------RoleName------WRPageDescs
10---------销售员-----------2,3,1,4
20---------行政人员---------1,2
30---------人事-------------3
40---------办公-------------2,4
表三:TDOA_WRPage
WRPageType-----WRPageName
1---------------公共
2---------------客户
3---------------项目
4---------------任务
5---------------工程
6---------------计划
……
在以上三个表中,为某个角色选取TDOA_WRPage表中的内容,可一个,可多个,选中后,当在程序中保存的时候,想将从
TDOA_WRPage得到的内容,全部一次性放到TDOA_WRRolePageType中,同时将每个角色对应的WRPageType字段内容放到TDOA_WRRole表的WRPageDescs字段中,以逗号隔开,也就是说这两个表中,每个角色对应的数据要同步,当有更新、删除等操作时,也是一样。
这样,用存储过程或者事务该怎么去实现,谢谢。
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2011-10-07
  • 打赏
  • 举报
回复
樓主自己測一下,看看有沒有什麼問題
bj2008huwei 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 roy_88 的回复:]
SQL code


declare @RoleCode nvarchar(20),@WRPageType nvarchar(20),@WRPageDescs nvarchar(20)
select @RoleCode='10'
delete from TDOA_WRRolePageType where RoleCode=@RoleCode


select @RoleCode='……
[/Quote]
谢谢了……
中国风 2011-10-07
  • 打赏
  • 举报
回复

declare @RoleCode nvarchar(20),@WRPageType nvarchar(20),@WRPageDescs nvarchar(20)
select @RoleCode='10'
delete from TDOA_WRRolePageType where RoleCode=@RoleCode


select @RoleCode='10'
insert into dbo.TDOA_WRRolePageType(RoleCode,WRPageType,SortNo)
select @RoleCode,WRPageType,SortNo from TDOA_WRPage where ','+@WRPageType+',' like '%,'+WRPageType+',%'


SELECT @RoleCode='10'
set @WRPageDescs=STUFF((select ','+RTRIM(WRPageType) from TDOA_WRRolePageType where RoleCode=@RoleCode ORDER BY SortNo for xml path('')),1,1,'')
SELECT @WRPageDescs
update dbo.TDOA_WRRole set WRPageDescs=@WRPageDescs where RoleCode=@RoleCode
bj2008huwei 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 roy_88 的回复:]
用觸發器控制,當TDOA_WRRolePageType變化時,更新TDOA_WRRole表
[/Quote]

--1、根据角色删除TDOA_WRRolePageType表中,角色对应内容
declare @RoleCode nvarchar(20),@WRPageType nvarchar(20),@WRPageDescs nvarchar(20)
select @RoleCode='10'
delete from TDOA_WRRolePageType where RoleCode=@RoleCode

--2、将角色对应的所有数据插入到表中
select @RoleCode='10'
insert into dbo.TDOA_WRRolePageType(RoleCode,WRPageType,SortNo)
select @RoleCode,WRPageType,SortNo from TDOA_WRPage where @WRPageType+',' like '%'+WRPageType+',%'


--3、将角色对应的所有数据取出,以固定格式,如(2,1,3,4)更新到角色表中,sortNo排序
SELECT @RoleCode='10'
set @WRPageDescs=(select WRPageType+',' from TDOA_WRRolePageType where RoleCode=@RoleCode ORDER BY SortNo for xml path(''))
SELECT @WRPageDescs
update dbo.TDOA_WRRole set WRPageDescs=@WRPageDescs where RoleCode=@RoleCode

我这样写了一部分,不知道,可以怎样改改》》谢谢。
中国风 2011-10-07
  • 打赏
  • 举报
回复
沒測過,這里舉個例子
CREATE TRIGGER tr_TDOA_WRRolePageType_insert ON TDOA_WRRolePageType
FOR UPDATE,INSERT,DELETE
AS
BEGIN
UPDATE b
SET [WRPageDescs]=a.[WRPageDescs]
FROM
(SELECT RoleCode,[WRPageDescs]=STUFF((SELECT ','+RTRIM(WRPageType) FROM TDOA_WRRolePageType WHERE RoleCode=i.RoleCode ORDER BY SortNo FOR XML PATH('')) ,1,1,'')
FROM INSERTED AS i
GROUP BY RoleCode)a
INNER JOIN TDOA_WRRole AS b ON a.RoleCode=b.RoleCode

UPDATE b
SET [WRPageDescs]=a.[WRPageDescs]
FROM
(SELECT RoleCode,[WRPageDescs]=STUFF((SELECT ','+RTRIM(WRPageType) FROM TDOA_WRRolePageType WHERE RoleCode=d.RoleCode ORDER BY SortNo FOR XML PATH('')) ,1,1,'')
FROM deleted AS d
GROUP BY RoleCode)a
INNER JOIN TDOA_WRRole AS b ON a.RoleCode=b.RoleCode

END
中国风 2011-10-07
  • 打赏
  • 举报
回复
用觸發器控制,當TDOA_WRRolePageType變化時,更新TDOA_WRRole表
yubofighting 2011-10-07
  • 打赏
  • 举报
回复
或者外键级联
yubofighting 2011-10-07
  • 打赏
  • 举报
回复
触发器
永动bug制造机 2011-10-07
  • 打赏
  • 举报
回复
帮顶。。。联表查。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧