问题1与问题2 答:能搜索的到,
问题3,如果在after indert 查询应该是有值了。
问题4:Sql server的Update机制是先删除后插入,估计用before update 和after update应该能查到。
嘻嘻,我其实也不知道对错,,只是我的理解,我做做实验瞧瞧

解决方案 »

  1.   

    1和2: 是的
    3:你用select @@IDENTITY  看看
    4:不能知道修改前是什么样的,修改前你还没触发呢,当然不知道。
      

  2.   

    谢谢!我现在很乱!所以没做数据测试!惭愧ing!麻烦你们了!我这样的态度真的不行!但是现在头大!真不想做这个测试!在这先说对不起!
      

  3.   

    问题2:
    select * from deleted 执行这个删除触发器中能否搜索到这些删除的记录?
    我问错了!这个当然能搜索出删除的那些记录!其实我是想问:在删除触发器中执行Select * from 表名能否搜索出那些删除的记录?我认为那个好像不行!
      

  4.   

    deleted 資料表會儲存因 DELETE 及 UPDATE 陳述式而受影響的資料列副本。在 DELETE 或 UPDATE 陳述式執行時,從觸發程序資料表中被刪除的資料列會傳送到 deleted 資料表,在正常的情形下,deleted 資料表與觸發程序資料表並不會有共同的資料列。inserted 資料表會儲存被 INSERT 及 UPDATE 陳述式影響的資料列副本。在插入或更新交易時,新的資料列會同時被加至觸發程序資料表與 inserted 資料表。inserted 資料表中的資料列即為觸發程序資料表中新加入資料列的副本。更新交易就像是插入後再刪除的動作;首先,舊資料列被複製到 deleted 資料表,接著將新資料列再複製到觸發程序資料表以及 inserted 資料表。
    3.是有值的
    4.修改前的紀錄就從deleted中找,修改後的紀錄就從inserted中找
      

  5.   

    关于3不管你是用for  insert 还是after  insert都是能取到哪个自增的值的。
      

  6.   

    4:不能知道修改前是什么样的,修改前你还没触发呢,当然不知道。
    这个好像不对吧!更新的时候应该有一个修改前的记录原来的数据和修改后的数据吧?如果不是的话为什么我们按esc的时候能取消更新呢?如果产生违反更新条例的话会提示错误呢?我想应该有这两个修改前和修改后的记录的数据的!只是不知道怎么取出来!
      

  7.   

    CREATE trigger mytrigger on dbo.tb1  for update 
    as
    begin
      insert tb2(stuid,score)
      select stuid,score 
      from deleted --取出原来的值  insert tb2(stuid,score)
      select  stuid,score
      from  inserted--取出改后的值
    end;
      

  8.   

    如果我没理解错的话,这些触发器中无论是FOR INSERT, UPDATE, DELETE 
    如果执行
    select * from 表名
    返回的全部都是它改变后的东西!它不会返回任何修改前后的东西.(就是: jackting() 说的资料表中的任何信息)只有如:要知道删除的记录的数据就使用(删除或者修改前的数据)
    select * from deleted
    要知道刚才更新的数据就使用(修改后或者插入的数据)
    select * from inserted谢谢各位了!如果我没理解错了我结帖了!
    呵呵!
    鞠躬!
    谢谢!
      

  9.   

    这个问题没人答:
      问个很简单的问题:回答马上给分!(分真的很重要吗?)  
    answer:
      觉得它重要的人就重要,觉得它不重要的人就不重要.再说了,分又不能拿来当饭吃.
      

  10.   

    同意outwindows(窗外),分当然不重要了,哈,是不。