update db set aaa='$aaa',bbb='$bbb',ccc='$ccc' where id=1这是一句修改DB数据库的语句。
我现在想得到返回值,即,哪几列是被修改了,就是说,有可能aaa这个字段现在提交的数据与原来存在的数据是一样的,那么这行就不用修改,如果只影响了bbb字段 ,返回bbb字段名 bbb以前的内容, 如果都修改了,那么返回被修改的字段名及以前的内容。 不知道是否有这个功能?

解决方案 »

  1.   

    这个可以在业务逻辑中处理,在执行update之前,先通过传过来的id执行select语句,查看原来的数据和要更新的数据是否相同,如果相同,就不用执行update;如果不相同,比较是哪些字段内容做了修改,接下来就是你自己想要什么内容了。
      

  2.   

    这样还要再select一次,比较浪费,我想问的有没有这种底层的解决方案。。
      

  3.   

    MYSQL中没有这个功能。如果一定要实现的话,可以1。通过after update触发器,来分别判断哪个字段的old.col != new.col 然后记录到一个表中,你再从这个表中取数据。
    2。在你自己的程序中(或存储过程中)先读取记录的原值,然后再判断是否与要更新的值一样。
      

  4.   

    To ACMAIN_CHM: 到处都可以看到你活跃的身影哦!佩服!
      

  5.   

    1.update 之前 select出来,比较一下,然后根据你的实际情况获取值!~~~2.如果你想要的是流水记录,那么应该增加另一个表来存储每次修改的记录。