首先创建主表
create table Master
(
VoteId int primary key,
VoteTitle varchar(30) not null,
VoteSum int default 0
)
insert into Master values(1,'选取班长',0)
insert into Master values(2,'选取学习委员',0)
insert into Master values(3,'选取组长',0)
再创建一个子表
create table Detail
(
VoteId int foreign key references Master(NameId),--定义外键,与主表关联
VoteDetailId int not null,
VoteItem varchar(30) not null,
VoteNum int detault 0,
primary key(VoteId,VoteDetailId) --定义双主键,只要不是两两相同就行
)
insert into Detail values(1,'班长1',1,0)
insert into Detail values(1,'班长2',2,0)
insert into Detail values(2,'委员1',1,0)
insert into Detail values(2,'委员2',2,0)
insert into Detail values(3,'组长1',1,0)
insert into Detail values(3,'组长2',2,0)
--创建触发器(当子表中的VoteNum加1时,主表中的VoteSum也加1,条件为具有相同的VoteId)
create trigger updateMaster
on Detail
for update
as
begin
update Master set VoteSum=VoteSum+1 where VoteId=(select top 1 VoteId from inserted)
end
//解释
inserted、deleted:
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表