当前位置: 代码迷 >> Sql Server >> MS SQL触发器删除的有关问题
  详细解决方案

MS SQL触发器删除的有关问题

热度:312   发布时间:2016-04-27 21:59:53.0
MS SQL触发器删除的问题
大家好,基于昨天我提问过的问题,.后来还是没弄好.请再帮帮忙.

-----------------统计表(Statistics)-----------
StatisticsID WebArticleNumber(全站文章总数) 
1 20 
--------------------------------------------- 

-----------------个人表(Personal)----------
ID UserName ArticleNumber(个人文章总数) 
1 "aaaaa" 6 
2 "bbbbb" 7
3 "ccccc" 7 
------------------------------------------ 

-----------------文章分类表(ArticleType)-----
TypeID ID UserName TypeNumber(分类的文章数量) 
1 1 "aaaaa" 4 
2 1 "aaaaa" 2 
3 2 "bbbbb" 3 
4 2 "bbbbb" 1
5 2 "bbbbb" 1 
6 2 "bbbbb" 2
7 3 "ccccc" 2 
8 3 "ccccc" 1
9 3 "ccccc" 2
10 3 "ccccc" 2 
-------------------------------------------
-----------------文章表(Article)------------------- 
ArticleID TypeID ID UserName ArticleTitle
1 1 1 'aaaaa' 'fasfafs'
2 1 1 'aaaaa' 'fasfdfyer'
3 1 1 'aaaaa' 'hjuiassssssssssdahabn'
4 1 1 'aaaaa' 'fweeeeeeeeeeeeeafxcccccccccc'
5 2 1 'aaaaa' 'hjuiassssssssssdahabn'
6 2 1 'aaaaa' 'hjuiassdahabn'
7 3 2 'bbbbb' '撒啊撒擦亮眼睛'
8 3 2 'bbbbb' '挖墙角'
9 3 2 'bbbbb' '啊亽他山之石'
10 4 2 'bbbbb' 'hjuiarrrrrrsadsdsdahabn'
11 5 2 'bbbbb' '屗哈噶发西撒播'
12 6 2 'bbbbb' '啊'
13 6 2 'bbbbb' '阿昌大案要案'
14 7 3 'ccccc' '屗哈达'
15 7 3 'ccccc' 'hjuiarrrrr啊dahabn'
16 8 3 'ccccc' '撒手不管'
17 9 3 'ccccc' '挖掘潜力'
18 9 3 'ccccc' '瑁撒手发表声明'
19 10 3 'ccccc' '亽呀屗大包大揽'
20 10 3 'ccccc' '撒发表文章'
---------------------------------------------
请问怎么建立触发器使得删除文章分类表中的某一条分类数据时,取得TypeNumber(分类的文章数量)的值, 
然后更新个人表和统计表,让它们分别减去TypeNumber(分类的文章数量)的值,

例如删除 文章分类TypeID为2这一项,同时更新 个人表名为"aaaaa"的(TypeNumber个人文章总数)减去文章分类TypeID为2的分类的文章数量 还有统计表也要减去文章分类TypeID为2的分类的文章数量. 

表中已经设置了关联的主键.当删除分类时,自动删除相关的文章.


能明白吗?不明白我再解释.
我把我建立的表帖出来:
Create Database abcd
GO
Use abcd
go
Create table [Statistics](StatisticsID int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
  WebArticleNumber int)
go
create table Personal(ID int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
  UserName varchar(10),
  ArticleNumber int)
go
create table ArticleType(TypeID int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
  ID int foreign key references Personal(ID) ON DELETE CASCADE , 
  UserName varchar(10),
  TypeNumber int)
GO
create table Article(ArticleID int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
  TypeID int foreign key references ArticleType(TypeID) ON DELETE CASCADE ,
  ID int,
  UserName varchar(20),
  ArticleType varchar(50))
GO
----//添加文章时//----
create trigger updateArticle--更新分类/个人表/统计表
on Article
for insert
as
begin
  update ArticleType set TypeNumber=TypeNumber+1 where TypeID=(select top 1 TypeID from inserted);
  update Personal set ArticleNumber=ArticleNumber+1 where ID=(select top 1 ID from inserted);
  update [Statistics] set WebArticleNumber=WebArticleNumber+1 where StatisticsID=(select top 1 StatisticsID from inserted)
end
GO
  相关解决方案