----INSERT触发器(假设A表的列全为字符型)
create trigger trg_insert_tbA on tbA
for insert
as
insert tbB(D)
select 
'A:' + i.A + ',' + 
'B:' + i.B + ',' + 
...
'K:' + i.K
GO----UPDATE触发器
create trigger trg_update_tbA on tbA
for update
as
if update(A)
    insert tbB(D) values('A')
if update(B)
    insert tbB(D) values('B')
...
if update(K)
    insert tbB(D) values('K')
GO

解决方案 »

  1.   

    抱歉,更正一下INSERT触发器,忘了一行代码(from inserted as i):
    create trigger trg_insert_tbA on tbA
    for insert
    as
    insert tbB(D)
    select 
    'A:' + i.A + ',' + 
    'B:' + i.B + ',' + 
    ...
    'K:' + i.K
    from inserted as i     /*补充上此行*/
    GO
      

  2.   

    create trigger trg_insert_tbA on tbA
    for insert
    as
    insert tbB(D)
    select 
    'A:' + i.A + ',' + 
    'B:' + i.B + ',' + 
    ...
    'K:' + i.K
    from inserted as i     /*补充上此行*/
    GO
    不需要加values('A:' + i.A + ',' + 
    'B:' + i.B + ',' + 
    ...
    'K:' + i.K
    from inserted as i )吗
      

  3.   

    插入新行有三种语法:
    1.insert table(列名列表) values(列值列表)
    2.insert table(列名列表) select 列名列表 from table2
    2.insert table default valuesINSERT触发器中采用的是第二种方法,这种方法能将inserted表中的所有行一次性插入到目的表中.
      

  4.   

    那update触发的时候
    像您说的那我有几个字段被修改了...那在表二中就会插入几条记录了
      

  5.   

    ----INSERT触发器(假设A表的列全为字符型)
    create trigger trg_insert_tbA on tbA
    for insert
    as
    insert tbB(D)
    select 
    'A:' + i.A + ',' + 
    'B:' + i.B + ',' + 
    ...
    'K:' + i.K
    from inserted as i
    GO----UPDATE触发器
    create trigger trg_update_tbA on tbA
    for update
    as
    declare @str varchar(1000)
    set @str = ''
    if update(A)
        set @str = @str + ',A'
    if update(B)
        set @str = @str + ',B' 
    if update(C)
        set @str = @str + ',C'
    ...
    if update(K)
        set @str = @str + ',K'insert tbB(D) values(stuff(@str,1,1,''))
    GO
      

  6.   

    获得表的字段的方法:
    declare @str varchar(8000)
    set @str = ''
    select @str = @str + ',' + name from syscolumns where id = object_id('表名称')
    --where name not in('Colx','Coly',...)     /*在此排除指定的列*/
    set @str = stuff(@str,1,1,'')
    print @str
      

  7.   

    create trigger trg_update_tbA on tbA
    for update
    as
    declare @str varchar(1000)
    set @str = ''
    if update(A)
        set @str = @str + ',A'
    if update(B)
        set @str = @str + ',B' 
    if update(C)
        set @str = @str + ',C'
    ...
    if update(K)
        set @str = @str + ',K'insert tbB(D) values(stuff(@str,1,1,''))这个里面没有得到字段中的值呀