以上不是更新表记录吧? ALTER

解决方案 »

  1.   

    是因为表记录的更改导致ALTER USER语句的执行!
      

  2.   

    终于弄明白了,要在触发器中使用事务,需使用PRAGMA AUTONOMOUS_TRANSACTIONCREATE OR REPLACE TRIGGER TRG_SYNCBOSSUSERINF
     AFTER UPDATE ON sid_bossuser 
       FOR EACH ROW
    -- 同步BOSS用户信息,包括用户姓名,密码
    DECLARE
       PRAGMA AUTONOMOUS_TRANSACTION; -- <<<<<<<<<<<<<<<<<<<<
    BEGIN 
       IF updating THEN
          UPDATE g_users SET disp_name = :NEW.Name WHERE Name = :NEW.UserId;
          EXECUTE IMMEDIATE 'ALTER USER ' || :NEW.UserId || ' IDENTIFIED BY P' || substr(:NEW.BossPassword, 1, 8);
          COMMIT;
       END IF;   EXCEPTION WHEN OTHERS THEN
          ROLLBACK;
          raise_application_error(-20001, '同步BOSS用户信息失败。' || SQLERRM || ', <' || USER || '>');
    END;