归档 write 编程 财务软件 会计 数据库 网络工程 运维 自考 doc文档系统 管理
 

金蝶用户异常

一,先清除用户配置表,如果清除以后还有问题,请继续清除下面的表数据。
--根据用户名清除用户配置表
delete t_userprofile where fuserid =(select fuserid from t_user where fname='manager');

二,清除方案表:
--根据用户名清除打印设置方案
delete t_LedgerPageSetup where fuserid =(select fuserid from t_user where fname='manager');

--根据用户名清除用户报表方案表
delete icreportprofile where fuserid =(select fuserid from t_user where fname='manager');


----终极解决方案:触发器解决。(慎用!!会导致用户不能保存查询方案或打印方案)。将以下触发器创建到数据库中去就好了。
--当icreportprofile被插入记录时,触发以下代码

CREATE TRIGGER tri_icreportprofile_Insert
  ON icreportprofile
  after INSERT
AS
DECLARE
  @fuserid  INTEGER;
BEGIN
  -- 取得插入的 @fuserid
  SELECT @fuserid = fuserid FROM INSERTED;
  
  IF EXISTS ( SELECT * FROM icreportprofile WHERE fuserid = @fuserid )
  BEGIN
    -- 不允许记录被插入,删除记录
    DELETE FROM icreportprofile WHERE fuserid = (SELECT fuserid FROM INSERTED);
   
    delete from t_userprofile where fuserid =(SELECT fuserid FROM INSERTED);
    delete from t_LedgerPageSetup where fuserid =(SELECT fuserid FROM INSERTED);
   
  END
  
END


--当t_LedgerPageSetup被插入记录时,触发以下代码

CREATE TRIGGER tri_LedgerPageSetup_Insert
  ON t_LedgerPageSetup
  after INSERT
AS
DECLARE
  @fuserid  INTEGER;
BEGIN
  -- 取得插入的 @fuserid
  SELECT @fuserid = fuserid FROM INSERTED;
  
  IF EXISTS ( SELECT * FROM t_LedgerPageSetup WHERE fuserid = @fuserid )
  BEGIN
    -- 不允许记录被插入,删除记录
    DELETE FROM icreportprofile WHERE fuserid = (SELECT fuserid FROM INSERTED);
   
    delete from t_userprofile where fuserid =(SELECT fuserid FROM INSERTED);
    delete from t_LedgerPageSetup where fuserid =(SELECT fuserid FROM INSERTED);
   
  END
  
END

 

posted @ 2020-05-12 14:47  少时的路  阅读(631)  评论(0)    收藏  举报