----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
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
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
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 )吗
1.insert table(列名列表) values(列值列表)
2.insert table(列名列表) select 列名列表 from table2
2.insert table default valuesINSERT触发器中采用的是第二种方法,这种方法能将inserted表中的所有行一次性插入到目的表中.
像您说的那我有几个字段被修改了...那在表二中就会插入几条记录了
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
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
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,''))这个里面没有得到字段中的值呀