菜鸟求救,还是触发器的问题

Scorpio_F 2007-01-17 10:54:00
各位大虾,现在我有两个表,一个company(id,部门名称,员工人数) 一个person(id,姓名,所在部门id)
person表的"所在部门ID" 就是 company表的id
我现在想要修改员工的信息,在修改员工所在部门的时候,有点问题
当员工换部门,我的company表的"员工人数"要相应的变化,出来的部门减1,要去的部门加1
我现在想用触发器来实现,问题是 以前写的触发器,例如我增加员工时,company表的 "员工人数"就增加1
以前的触发器如下:
CREATE TRIGGER Add_Person ON dbo.person
FOR INSERT
AS

update company set staffnumber = staffnumber+1 where ID =(select "所在部门id" from inserted)
还有一个删除员工的,是 staffnumber = staffnumber-1 部门的人数变化都符合我的要求
现在的问题是我在更新员工信息时,修改部门ID后,一个部门人数要增加,一个要减少,触发器改如何写,
还有一点,因为我修改员工信息时,是不改变员工的ID的 所以不想把这个员工从这个部门删除,在增加到另一个部门去
现在我不知道现在修改时,如何控制触发器,在(select "所在部门id" from inserted)语句中,无法控制我想要执行的是增加还是减少。
小弟初学数据库,好多东西不会,也不知道我表达清楚了没有,还望大家指点一下
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Scorpio_F 2007-01-17
  • 打赏
  • 举报
回复
谢谢回复,本人有平限,现在去试试,不行再问你们
marco08 2007-01-17
  • 打赏
  • 举报
回复
CREATE TRIGGER Add_Person ON dbo.person
FOR update
AS
if update(所在部门id)
if exists(select 1 from deleted A inner join inserted B on A.所在部门id<>B.所在部门id)
begin
update company set staffnumber = staffnumber+1 where ID=(select 所在部门id from inserted)
update company set staffnumber = staffnumber-1 where ID=(select 所在部门id from deleted)
end
baoshan 2007-01-17
  • 打赏
  • 举报
回复
--:(
--原来部门减一
update company set staffnumber = staffnumber-1 where ID =(select "所在部门id" from deleted)
baoshan 2007-01-17
  • 打赏
  • 举报
回复
CREATE TRIGGER add_Person ON dbo.person
FOR INSERT
AS

update company set staffnumber = staffnumber+1 where ID =(select "所在部门id" from inserted)
go

CREATE TRIGGER Update_Person ON dbo.person
FOR update
AS
--原来部门减一
update company set staffnumber = staffnumber+1 where ID =(select "所在部门id" from deleted)
-新部门加一
update company set staffnumber = staffnumber+1 where ID =(select "所在部门id" from inserted)

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧