一行一行的更新或者删除,没有其他办法,不然如何保证数据的正确性
例如我做以下命令
delete from tableA
如果能够多次触发,请问如何保证命令最后正确执行

解决方案 »

  1.   

    不可能的。sql server的触发器是基于一次修改或删除操作的。
    也就是说,你执行一条sql语句,无论,你更新了多少条数据,都只执行一次。不过,你可以在deleted表里获得本次操作修改的数据。然后对其进行操作。
    对了,你用的是sql server吗,如果不是,就当我没说。
      

  2.   

    你的意思是不是针对每一行操作?
    for each row 啊
    oralce
      

  3.   

    to yangzi:(不过,你可以在deleted表里获得本次操作修改的数据。然后对其进行操作。)
    如何获得本次操作修改的数据呀??我用的是sql server
      

  4.   

    在delete触发器中可以使用deleted表(虚表),这个表有本次操作删除的所有记录,结构与原表一样。
      

  5.   

    同样,在insert触发器中可以使用inserted表.
    在update触发器中可以使用inserted和deleted 2个表. 其中deleted有update前的记录数据,inserted有有update后的记录数据。删除,修改多行时候触发多次是没必要的。
      

  6.   

    不能触发多次,哪有这么奇怪的trigger呀
      

  7.   

    不过,你可以在deleted表里获得本次操作修改的数据。然后对其进行操作delete表中就是当前修改的数据。不过,sql server 的触发器是后触发的。所以,你还得把不想删除的数据再insert回原表,何苦呢? 我倒倾向于用一个存储过程完成整个删除过程。细化你的删除条件,查询出要删除的或要修改的,然后再删除记录或修改所要修改的字段值。
      

  8.   

    to yangzi:do you still online?
    tell me your email ok?
    thank you very much!
      

  9.   

    不好意思,我刚看到,我的email是[email protected].大家以后相互交流。既然问题解决了,把你的三个贴子消了吧。
      

  10.   

    to yangzi:怎么消呀?我不会呀??