在trigger中
mssql可以通过select * from inserted 获取插入值。mysql好像不行。有没有办法实现?

解决方案 »

  1.   

    不能,通过new.f1、new.f2取得新的列值
      

  2.   


    还不知道可以这样用,学习一下,以前都是new.columnName
      

  3.   


    对不起,误导了,其实我要说的也是“new.columnName”这种方法MSSQL的是过渡表,而MYSQL只有过渡变量的概念
      

  4.   

    对,在MYSQL TRIGGER中用
    select * from NEW 
    会出现没有LOCK NEW的提示
      

  5.   

    --------------------------------------------------------- 
    MSSQL中有这样一种情景: 
    insert into table select * from table1 ---就是说一句sql语句就插入了多条记录,这个时候table的trigger也只触发了一次,mssql trigger可以用select * from inserted来获取所有数据。。 mysql有没有这种情况呢?如果有的话,如何解决?new.columnName肯定是不行的了。   
      

  6.   

    --------------------------------------------------------- 
    MSSQL中有这样一种情景: 
    insert into table select * from table1 ---就是说一句sql语句就插入了多条记录,这个时候table的trigger也只触发了一次,mssql trigger可以用select * from inserted来获取所有数据。。 mysql有没有这种情况呢?如果有的话,如何解决?new.columnName肯定是不行的了。   
      

  7.   

    没有,只有一个一个字段new.f1 new.f2
      

  8.   


    应该是每条记录都会触发一次trigger吧
      

  9.   

        mysql的insert触发器或者是update触发器的被插入数据是用NEW对象来存储的,它不是一张表,也不是一个变量,它是一个对象,其中的内部成员变量就是每个字段,这样就容易理解了:NEW.columnName可以取得新的要插入的记录的列。
        其中还有一个是OLD对象,这个对象是你要删除的那条记录。使用方法和作用NEW差不多,但存储的记录不同。
         mysql没有mssql中的INSERTED 和 DELETED表,却有NEW和OLD两个记录对象,但是,这两个对象分别只能存储一条记录,而不能存储多条记录,因为它们不是表啊。
      

  10.   

    那怎么实现,当user表加入了一条记录,相应的在person表也加入一条记录呢????