select * from inserted  select * from deleted表中删除和添加的记录分别放在deleted, inserted  这2个逻辑表中

解决方案 »

  1.   

    在触发器中执行:新增或更新后的记录:select * from inserted删除或更新前的记录:select * from deleted
      

  2.   

    inserted和deleted表示临时表,只有在触发器执行的时候才能使用这两个表!
      

  3.   

    SQL自带的帮助:Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。在设置触发器条件时,应当为引发触发器的操作恰当使用 inserted 和 deleted 表。虽然在测试 INSERT 时引用 deleted 表或在测试 DELETE 时引用 inserted 表不会引起任何错误,但是在这种情形下这些触发器测试表中不会包含任何行。
      

  4.   

    谢谢大家,我是想把更改后的结果集得到,在.net程序中调用.
    我是直接在触发器中返回结果集吗,还是其他方法.
    那位能给个例子.
      

  5.   

    触发器可以包含任意数量和种类的 Transact-SQL 语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。
    所以你只能在做这个操作之前在.net端自己写select来得到要插入或修改的数据.
      

  6.   

    哦 我就是不知道添加和修改的数据呀.
    我的需求是,类似于同步两个表,有一个sql的表和Oracle表,sql表添加和修改后(我不知道要添加修改什么,因为是另一个程序用的表),将改动的数据加入到oracle表中,中间还有一些复杂的对应关系,所以才想用.net得到数据集. 大家帮我想想办法呀.
      

  7.   

    思路:
    1、insert 、delete时触发 触发器
    2、触发器 把 inserted 临时表的数据放入一个临时表里tempTable(这里临时表自己建立,作为中转站)
    3、。net访问 tempTable,得到数据,写到Oracle