IF(:NEW.[LOG_LIST.ITEMS_PROPERTY] <> :OLD.[LOG_LIST.ITEMS_PROPERTY])  THEN  
关键的是 要这句判断
 这句语法不行 

解决方案 »

  1.   

    if updating('C') then --判断c字段是否进行了更新操作
      

  2.   


    CREATE OR REPLACE TRIGGER TR_LOG_UPDATE_JYT
      BEFORE UPDATE ON T_JYT
      FOR EACH ROW
    DECLARE
    BEGIN
     FOR LOG_LIST IN (SELECT * FROM T_LOG_CONFIG TCL WHERE TCL.ITEMS_TYPE = 'J')  -- 存字典数据表
       LOOP 
         IF(UPDATING(UPPER(LOG_LIST.ITEMS_PROPERTY)) ) THEN 
              INSERT INTO T_LOG (
                  ID,               -- 主键
                  OPTTIME,          -- 操作时间
                  OPTNAME,          -- 操作人
                  OPTFACE,          -- 操作模块
                  OPT,              -- 操作名称
                  CPXH,             -- 操作的产品序号
                  OPT_MEMO,         -- 操作说明
                  OPT_ITEMS,        -- 操作的主项目
                  OPT_SUBITEMS,     -- 操作的子项目
                  OPT_LABEL,        -- 操作的项目属性描述名
                  OPT_OLD_VALUE,    -- 操作前的值
                  OPT_NEW_VLAUE,    -- 操作后的值
                  OPT_BGBH          -- 报告编号   
              ) 
              VALUES (
                  SYS_GUID(),
                  SYSDATE,
                  :NEW.CZY,
                  '绝缘件',
                  '修改',
                  :NEW.CPXH,
                  '操作UUID:' || :NEW.ID,  
                  LOG_LIST.ITEMS , 
                  LOG_LIST.ITEMS_SUB,  
                  LOG_LIST.Items_Lable,
                  '',-- 修改前的值 :OLD.[LOG_LIST.ITEMS_PROPERTY], 这个要怎么动态取字典表里面的字段
                  '',-- 修改后的值 :NEW.[LOG_LIST.ITEMS_PROPERTY], 这个要怎么动态取字典表里面的字段
                  :NEW.BGDBH
              ) ;
              DBMS_OUTPUT.PUT_LINE('INSERT T_LOG COMMIT');         
         END IF;
       END LOOP;
    END TR_LOG_UPDATE_JYT;