田源
2025-01-15 78fa1f005a9ec2581611e53d7eba8efeacb4df6e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
CREATE OR REPLACE TRIGGER "SYNC_USERROLE_COPY"
  before insert or update or delete on pluserrole
  for each row
/*************************************************************
author: liucq
create time: 2015.06.01
description: Ô­Ê¼Óû§½ÇÉ«±í£¨pluserrole£©ÉϵÄǰÖô¥·¢Æ÷£¬
             µ±Óû§½ÇÉ«±í·¢ÉúÌí¼Ó¡¢Ð޸ġ¢É¾³ýÊý¾Ýʱ£¬
             Í¬²½¸üе½ÓëÓû§¶ÔÓ¦µÄ Á´½ÓÀàÐÍ ½ÇÉ«Óû§(roleuser)±í
logic rules: 
last modifyer: 2017.06.07
last modify time: 2017.06.07
change history:
       2017.06.07 xchao Ìí¼Ó×¢ÊÍ
*************************************************************/
declare
  userroleTabCount number;
  personOid varchar2(64);
  userCount number;
  userName varchar2(128);
  personCount number;
begin
  select count(*) into userroleTabCount from user_tables where lower(table_name) = 'platformlt_roleuser';
  if userroleTabCount = 0 then
    return;
  else
  if inserting then
    select count(*) into userCount from pluser u where u.pluid = :new.PLUSERUID;
    if userCount  = 0 then
      return;
    else
      select u.plusername into userName from pluser u where u.pluid = :new.PLUSERUID;
      select count(*) into personCount from platformbtm_user p where p.id = userName;
      if personCount = 0 then
        return;
      else
        select p.oid into personOid from platformbtm_user p where p.id = userName;
        insert into platformlt_roleperson
        values
        (get_uuid,
         '',
         '',
         '',
         '',
         :new.PLROLEUID,
         '',
         '',
         'role',
         personOid,
         '',
         '',
         'user',
         ''
         );
       end if;
     end if;
  end if;
  if deleting then
    select count(*) into userCount from pluser u where u.pluid = :old.PLUSERUID;
    if userCount  = 0 then
      return;
    else
      select u.plusername into userName from pluser u where u.pluid = :old.PLUSERUID;
      select count(*) into personCount from platformbtm_user p where p.id = userName;
      if personCount = 0 then
        return;
      else
        select p.oid into personOid from platformbtm_user p where p.id = userName;
        delete from platformlt_roleperson rp
         where rp.f_oid = :old.PLROLEUID and rp.t_oid = personOid;
      end if;
    end if;
  end if;
  end if;
end;
/