返回列表 回复 发帖

ERP实用SQL脚本:快速复制公司权限

本SQL用于,新建公司帐套的时候,可能该新建公司与以前存在的公司的操作员及操作员的权限均会相同,则我们可以用该脚本快速复制公司之间的权限(包括操作员、角色、及操作员角色对应的权限),具体SQL脚本为:
      declare @sourcepkcorp char(4) --来源公司
  declare @topkcorp char(4) --目的公司
  declare @nowtime char(19) --TS时间
  declare @left4='AAAA'--为了使新增数据的记录与数据库中的已存记录的主键不冲突,所以新生成的主键左边4位为'AAAA'以保证不重复。
  set @souecepkcorp='1011'
  set @topkcorp='1015'
  set @nowtime='2008-01-21 11:50:00'
  --1.复制海南的角色至北京
  
  insert into sm_group
  select replace(cgroupid,@sourcepkcorp,@left4),0,group_name,group_note,@topkcorp,@nowtime from sm_group
  where group_name not in (
  select group_name from sm_group where pk_corp=@topkcorp
  
  ) and pk_corp=@sourcepkcorp
  --2.复制角色权限。
  insert into sm_usergrouppower
  select @left4+right(cpowerid,16),0,funid,replace(groupid,@sourcepkcorp,@left4),@topkcorp,@nowtime from sm_usergrouppower where groupid in (
  select cgroupid from sm_group where pk_corp=@sourcepkcorp
  ) and dr=0 and replace(groupid,@sourcepkcorp,@left4) in (
  select cgroupid from sm_group where pk_corp=@topkcorp
  )
  
  --3.将海南有的用户都关联至北京公司。
  insert into sm_userandcorp
  select dr,@topkcorp,@left4+RIGHT(pk_userandcorp,16),@nowtime,userid from sm_userandcorp where pk_corp=@sourcepkcorp
  and userid not in(
  select userid from sm_userandcorp where pk_corp=@topkcorp
  )
  --4.将用户关联角色。
  insert into sm_user_rela
  select replace(crelaid,@sourcepkcorp,@topkcorp),0,replace(groupid,@sourcepkcorp,@left4),@topkcorp,@nowtime,userid from sm_user_rela
  
  where pk_corp=@sourcepkcorp and replace(groupid,@sourcepkcorp,@left4) in (
  select cgroupid from sm_group where pk_corp=@topkcorp
  )
很好,学习了!!!
返回列表