首页 新闻 会员 周边 捐助

向数据表A中插入记录后,表B中的数据记录怎样自动更新

0
悬赏园豆:10 [已解决问题] 解决于 2010-10-31 00:57

例如,首先有两个表(学生表和班级表),向学生表中插入几条学生数据记录后,班级表中的班级人数自动变更。

班级人数有45人,插入学生数据后,班级人数应变成50

zzturi的主页 zzturi | 初学一级 | 园豆:185
提问于:2010-10-25 01:41
< >
分享
最佳答案
0

用触发器

示例:

use Testdb2
go

IF NOT OBJECT_ID('[t_Class]') IS NULL
DROP TABLE [t_Class]
GO
CREATE TABLE [t_Class]
(
[ID] int identity(1,1) primary key not null,
[Name] Nvarchar(20) null,
[Number] int null
)
go

INSERT [t_Class]
SELECT '一班',0 union all
SELECT '二班',0 union all
SELECT '三班',0
go

IF NOT OBJECT_ID('[t_Student]') IS NULL
DROP TABLE [t_Student]
GO
CREATE TABLE [t_Student]
(
[ID] int identity(1,1) primary key not null,
[Name] Nvarchar(20) null,
[ClassID] int not null
)
go
--select * from [t_Student]

alter TRIGGER Trigger_AutoCountStudentNumbersByClassID
ON dbo.[t_Student]
FOR INSERT,update
AS
Update [T_Class] set [Number]=
s.TNumber
from
(
select count(1) as Tnumber,ClassID from [T_Student] group by ClassID)
s
inner join [T_Class] c on c.[ID]=s.ClassID
where c.ID in (select [ClassID] from inserted group by ClassID)
go


--插入测试数据

--truncate table [T_Student]
--
go

insert into [T_Student]
select '李洪治',1 union all
select '韦一笑',2 union all
select '吕不为',2
go

select * from [T_Student]

select * from [T_Class]

--结果
--
ID Name ClassID
--
1 李洪治 1
--
2 韦一笑 2
--
3 吕不为 2

----ID Name Number
--
--1 一班 1
--
--2 二班 2
--
--3 三班 0

 

收获园豆:10
邀月 | 高人七级 |园豆:25475 | 2010-10-25 08:21
谢谢
zzturi | 园豆:185 (初学一级) | 2010-10-31 00:55
其他回答(6)
0

同意楼上的.

changbluesky | 园豆:854 (小虾三级) | 2010-10-25 08:29
0

同意楼上的回答,

1、触发器。

2、sql语句+事务处理

3、存储过程+事务处理

邢少 | 园豆:10926 (专家六级) | 2010-10-25 09:02
0

在表A上建触发器,当有数据插入A时,更新表B

tyb1222 | 园豆:259 (菜鸟二级) | 2010-10-25 09:16
0

使用触发器,sql语句如下:

 

create trigger insert_students after insert on students
for each row
as begin
update grade set students_num = select count(1) from students
group by students_name
end
dodohua | 园豆:1037 (小虾三级) | 2010-10-25 09:29
0

用触发器

天神一 | 园豆:845 (小虾三级) | 2010-10-25 11:13
0

班级表的人数一列应该三算出来的,不是手动更新的吧?

天堂口 | 园豆:514 (小虾三级) | 2010-10-25 14:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册