SQL中,如何在表A中插入或者更新一条数据的同时能将该数据更新到表B中去
我们设置一个具体问题,假设表A为科目表,有科目名,科目类型,授课老师,选修人数,表B为统计表,用来统计某些科目类型的选修人数,有科目类型,选修人数,如何设计触发器,在A表...
我们设置一个具体问题,假设表A为科目表,有科目名,科目类型,授课老师,选修人数,表B为统计表,用来统计某些科目类型的选修人数,有科目类型,选修人数,如何设计触发器,在A表更新或者插入数据时,能更新B表中的数据。而且A表中的科目类型有可能B表中没有。
展开
3个回答
展开全部
create trigger TR_A_IU on A for INSERT, update as
BEGIN
DECLARE @kmlx NUMERIC(10), @xxrs NUMERIC(10)
SELECT @kmlx = 科目类型 FROM inserted
SELECT @xxrs = isnull(sum(选修人数), 0) FROM A WHERE 科目类型 = @kmlx
IF (SELECT count(1) FROM B WHERE 科目类型 = @kmlx) > 0
UPDATE B SET 选修人数 = @xxrs WHERE 科目类型 = @kmlx
ELSE
INSERT B (科目类型, 选修人数) SELECT @kmlx, @xxrs
IF @@ERROR <> 0 GOTO error
RETURN
error:
raiserror('写B表失败', 16, 1)
end
GO
BEGIN
DECLARE @kmlx NUMERIC(10), @xxrs NUMERIC(10)
SELECT @kmlx = 科目类型 FROM inserted
SELECT @xxrs = isnull(sum(选修人数), 0) FROM A WHERE 科目类型 = @kmlx
IF (SELECT count(1) FROM B WHERE 科目类型 = @kmlx) > 0
UPDATE B SET 选修人数 = @xxrs WHERE 科目类型 = @kmlx
ELSE
INSERT B (科目类型, 选修人数) SELECT @kmlx, @xxrs
IF @@ERROR <> 0 GOTO error
RETURN
error:
raiserror('写B表失败', 16, 1)
end
GO
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE trigger [dbo].[Tr_Insert_Table]
on [dbo].[表A]
after insert
As
begin
insert into 表B(有科目类型,选修人数)
(
select 科目类型,1 from inserted
)
end
on [dbo].[表A]
after insert
As
begin
insert into 表B(有科目类型,选修人数)
(
select 科目类型,1 from inserted
)
end
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为A表创建Insert,Update类型的after触发器,然后在触发器中添加insert into b(,,,)values(,,,,);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询