`
冷寒冰
  • 浏览: 245241 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅入浅出带有主外键约束的触发器

 
阅读更多
网上有很多触发器的例子,但表之间都是没有主外键约束的,下面做一个例子实现带有主外键约束的触发器。
现有两张表:部门表(department) deNum int primary key   --部门编号
                              deName nvarchar(50)   --部门名称
            员工表(employee)  emNum  int primary key   --员工编号
                                 deNum   int foregin key
                             references department(deNum)--所属部门
需求:当更新主表的部门编号时(当然实际中,我们通常是不会去更新这个字段的)同时更新从表的所属部门编号。我们用触发器实现:
create trigger tri_updateDeNum
on department
for update
as
begin
declare @oldid int,
        @newid int
  select @oldid=deNum from deleted--获得更新前的id
  select @newid=inserted.deNum from department,inserted where department.deNum=inserted.deNum--获取更新后的id
--if(@oldid is null)--判断oldid是否已经取到
--print('@oldid is null')
--if(@newid is null) 判断newid是否已经取到
--print('@newid is null')
if(@oldid is null) or (@newid is null) or(@oldid=@newdi)
--print('failture')
return
--更新从表
update employee set deNum=@newID where deNum=@oldID
end    
          
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics