【问题标题】:mysql update trigger old, new row's column logmysql更新触发旧,新行的列日志
【发布时间】:2012-12-11 15:12:04
【问题描述】:

我的更新触发器

BEGIN
DECLARE s VARCHAR(100);
IF (OLD.authUId <> NEW.authUId) THEN SET s = CONCAT(s,'&authUId=', OLD.authUId); END IF;
IF (OLD.autPId <> NEW.autPId) THEN SET s = CONCAT(s,'&autPId=', OLD.autPId); END IF;
.....

INSERT INTO l_dblog(src,newId,oldValue) VALUE('auth_up',new.authId,s);
END

插入行 oldValue 列总是空插入,我的问题是什么?

我的删除触发器成功了

我的删除触发器:

 BEGIN
      DECLARE s VARCHAR(60);
      SET s = CONCAT('&authUId=', OLD.authUId,'&autPId=', OLD.autPId,'&authTypeId=', OLD.authTypeId,'&authValue=', OLD.authValue);   
    INSERT INTO l_dblog(src,newId,oldValue) 
     VALUE('auth_del',OLD.authId,s);
    END

谢谢...

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    在更新查询中将变量 s 的默认值设置为空白,然后检查天气触发器是否工作。如果不是运行触发器后出现的错误。

    BEGIN
    DECLARE s VARCHAR(100) DEFAULT '';
    IF (OLD.authUId <> NEW.authUId) THEN SET s = CONCAT(s,'&authUId=', OLD.authUId); END IF;
    IF (OLD.autPId <> NEW.autPId) THEN SET s = CONCAT(s,'&autPId=', OLD.autPId); END IF;
    .....
    
    INSERT INTO l_dblog(src,newId,oldValue) VALUE('auth_up',new.authId,s);
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多