[提问]这个问题因该用触发器还是存储过程解决呀?
现有两张表 T1 和 T2
T1有字段 A1 A2 A3
T2有字段 A1 B2 B3
现在要解决如下问题:
A1都是主键相关连,一一对应。
当T1表中的A2被修改后自动将A2列的数据追加到T2表的B2列后面,条件为T1表的A1等于T2表的A1。
------解决方案--------------------现有两张表 T1 和 T2
T1有字段 A1 A2 A3
T2有字段 A1 B2 B3
现在要解决如下问题:
A1都是主键相关连,一一对应。
当T1表中的A2被修改后自动将A2列的数据追加到T2表的B2列后面,条件为T1表的A1等于T2表的A1。
字符串的追加 比如说:我在T1表A2里输入了A2C这个值,那么T2表的A2就自动变为A2C。如果T1表的A2里改为了C3C那么T2表的A2就要变为C3CA2c。
-------------
T1表A2里输入了A2C这个值
——能不能理解为INSERT一条新纪录
假设可以这样理解。Next:
那么T2表的A2就自动变为A2C
——A1都是主键相关连,一一对应,T2没有刚INSERT纪录对应的A1,A2怎么变,能不能理解为T1插入记录T2也跟着插入
假设可以这样理解。Work:
SQL code
create trigger t1_insert
on T1
for insert
as
begin
set nocount on
insert T2 select * from INSERTED
set nocount off
end
go
create trigger t1_update
on T1
for update
as
begin
set nocount on
/*
这样的逻辑要求,就算T2为varchar(8000),都有可能出现T2已经无法容纳的情况,系统就会提示“截断二进制数据或字符串”。
*/
update a set a.B2=b.A2+isnull(a.B2,'') from T2 a join INSERTED b on a.A1=b.A1
set nocount off
end
go