准备写一个触发器来记录表中信息变化的日志
其中需要实现: 
当某条记录的某个字段信息变动时,获取该字段名CREATE TRIGGER trg1
  AFTER INSERT OR UPDATE OR DELETE ON table1
  FOR EACH ROW
BEGIN
  ...
  ELSIF UPDATING THEN
    INSERT INTO log_talbe (    --写入日志表
      event_type,    -- 操作类型,2表示update操作
      table_name,   --表名,写死了,为talbe1
      column_name,    --字段名,获取变动信息所在的字段名
      old_value,
      new_value
    )
    VALUES (
      2,
      'talbe1',
      'column_name',
      'old_value',
      'new_value'
    );
  END IF;
END;

解决方案 »

  1.   

    if :old.字段名称<>:new.字段名称 then
       v_column_name:=v_column_name||' '||字段名称;
    end if;
      

  2.   

    这种方法对数据库的性能影响极大,特别是在字段数目较多的时候
    还有,现在好象没有办法可以监测到类似于ORACLE里的BLOB等大字段的数据变动
      

  3.   

    我最后决定,每个字段用个触发器CREATE TRIGGER trg1
      AFTER INSERT OR UPDATE OR DELETE of 字段名 ON table1