在更新时创建触发器并插入到自定义表中

时间:2013-11-29 15:21:13

标签: mysql sql

我有一个要求,当“psoprdefn”表中的“psroleuser”中的特定角色更新并将值插入我的自定义表时,我必须创建一个触发器。

出于某种原因,下面的触发器似乎不起作用。请帮忙。

CREATE TRIGGER z_LOGIN2
AFTER UPDATE OF lastsignondttm  ON SYSADM.PSOPRDEFN
FOR EACH ROW     
BEGIN
SELECT DISTINCT a.oprid, a.oprdefndesc, a.lastsignondttm, b.rolename
from SYSADM.psoprdefn a, SYSADM.psroleuser b
where a.oprid=b.roleuser
and (rolename = 'FAS Change Admin' or b.rolename='PeopleSoft Administrator')
INSERT INTO z_LOGIN       VALUES(psoprdefn.oprid,psoprdefn.oprdefndesc,psoprdefn.lastlogondttm)

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

CREATE TRIGGER z_LOGIN2 AFTER UPDATE OF lastsignondttm ON SYSADM.PSOPRDEFN
FOR EACH ROW

BEGIN
  IF (SELECT COUNT(1)
      FROM SYSADM.psroleuser b
      WHERE b.roleuser = NEW.oprid AND (b.rolename = 'FAS Change Admin'
            OR b.rolename = 'PeopleSoft Administrator')) > 0 THEN

  INSERT INTO z_LOGIN VALUES (NEW.oprid,NEW.oprdefndesc,NEW.lastlogondttm);
 END IF;

END;

如果更新原始表的用户在psroleuser中具有角色名称为“FAS Change Admin”或“PeopleSoft Administrator”,则验证。如果是,则将更新的值插入z_LOGIN表中。