是这样一个逻辑将某表所有ID为'a'的数据的STATUS字段改为“停用”(update  table_a set status='停用' where id='a')之后另一张表是用来记录日志的LOG表就是说 刚才table_a里update了多少行日志LOG表就要插入多少行相关的数据SQL应该怎么写?

解决方案 »

  1.   

    写个触发器吧。当update  table_a set status='停用' where id='a'触发。
      

  2.   

    写个触发器 当a表进行更新操作时候就往LOG表插入更新多少条
      

  3.   

    做一个事务处理就可以了:update  table_a set status='停用' where id='a';insert into table_b where id='a';把这两句作为一个事务来执行。如果很多,用程序写个循环控制即可。ps:若要保存更新前的信息到log表中,则两句调换顺序。
      

  4.   

    update  table_a set status='停用' where id='a' 
    Insert Table2 (aaa) Values( @@ROWCOUNT) 
      

  5.   

     创建触发器的SQL语法
      DELIMITER |
      CREATE TRIGGER `<databaseName>`.`<triggerName>`
      < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > 
      ON <tableName>//这里是你的更新语句 
      FOR EACH ROW
      BEGIN 
      --do something//这里写你的insert语句
      END |
      

  6.   


    update  table_a set status='停用' where id='a'
    insert into table_Log values (@@rowcount)
      

  7.   


    -- =============================================================================
    -- 標題: 觸發器Trigger、inserted | update表的應用
    -- 目的: 利用Trigger做日志,當A表的內容有變化時,B表會記錄下這些變化.
    -- 原創: takako_mu
    -- 时间: 2009-10-19
    -- 地点: 昆山
    -- =============================================================================
    if not object_id('TempA') is null drop table TempA
    create table TempA(uid int identity(1,1) not null primary key,department nvarchar(10),uname nvarchar(15))
    if not object_id('TempB') is null drop table TempB
    create table TempB(uid int identity(1,1) not null primary key,old_department nvarchar(10),
    new_department nvarchar(10),old_uname nvarchar(15),new_uname nvarchar(15),uaction nvarchar(10),actionDate datetime)
    goif object_id('Tri_Test')is not null drop trigger Tri_Test
    go
    create trigger Tri_Test on TempA
    for insert,update 
    as
    if not exists(select 1 from deleted)
       insert TempB select null,department,null,uname,'Insert',getdate() from inserted
    else
       begin
          declare @department nvarchar(10),@uname nvarchar(15)
          select @department=department,@uname=uname from deleted
          insert TempB select @department,department,@uname,uname,'Update',getdate() from inserted
       end
    go--測試一
    --先插入一筆資料進TempA,看看TempB有什么變化.
    insert into TempA select 'IT-SCM','Takako'
    go
    select * from TempA
    select * from TempB
    /**//*
    (1 個資料列受到影響)(1 個資料列受到影響)
    uid         department uname
    ----------- ---------- ---------------
    1           IT-SCM     Takako(1 個資料列受到影響)uid         old_department new_department old_uname       new_uname       uaction    actionDate
    ----------- -------------- -------------- --------------- --------------- ---------- -----------------------
    1           NULL           IT-SCM         NULL            Takako          Insert     2009-10-19 09:03:15.210(1 個資料列受到影響)
    */
    --測試二
    --對TempA的一筆資料做update動作,看看TempB會有什么變化.
    update TempA set department='IT-ERP',uname='Snoopy'
    select * from TempA
    select * from TempB
    /**//*
    (1 個資料列受到影響)(1 個資料列受到影響)
    uid         department uname
    ----------- ---------- ---------------
    1           IT-ERP     Snoopy(1 個資料列受到影響)uid         old_department new_department old_uname       new_uname       uaction    actionDate
    ----------- -------------- -------------- --------------- --------------- ---------- -----------------------
    1           NULL           IT-SCM         NULL            Takako          Insert     2009-10-19 08:49:33.233
    2           IT-SCM         IT-ERP         Takako          Snoopy          Update     2009-10-19 08:49:38.737(2 個資料列受到影響)
    */
      

  8.   

    触发器好像好复杂的感觉T T
    update  table_a set status='停用' where id='a'
    insert into table_Log values (@@rowcount)
    @@rowcount是什么呢
      

  9.   

    选插入log表
    insert into tb_log 
    select 字段... from table_a where id='a'
    再更新
    update  table_a set status='停用' where id='a'
      

  10.   


    cmd1=update  table_a set status='停用' where id='a'
    SqlCommand cmd = new SqlCommand(cmd1,con);
    cmd.Connection = con;
    cmd.ExecuteNonQuery(); 这个返回影响行!
      

  11.   


    那对LOG表的插入要怎么做呢?