至于问题1,:new.id值已经插入了吧

解决方案 »

  1.   

    1.因为已经执行了插入操作,你的after触发器不可以更改这个值
    2.你的before触发器将id值更改为2 了
      

  2.   

    好像不对吧?:new不是我的insert语句执行了才可以执行吗?那before有什么作用啊?
      

  3.   

    就这个例子,根据输出,先好好理解:new的含义
      

  4.   

    to yxxx(小孬) ( )
    好像就是按照你说的了。
      

  5.   

    是这样的,首先你执行了insert语句,这时每个字段将有一个新值(也就是new),但还没真正插入数据库。在这个状态下,也就是before insert了,此时你可以修改任何:new值。
    当after insert其实数据库已经发生了变化,这时的:new也只是表示了你用何值去更新数据库的,该值已经不能再改变了,否则就会出错了。