`
yizhilong28
  • 浏览: 229339 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

简单的触发器

 
阅读更多
有两个表a,b;二者多对一的关系。其中a表的一个字段数据需要根据b表的一个字段来确定
新增时,业务逻辑是
   a对应的b , 可能为空;可能为X级;可能为Y级。
   如果b为空,则 a的“入选否” 的值肯定为 否;
   如果b是X级,则 a的“入选否” 的值肯定为 否;
   如果b是Y级,则 a的“入选否” 的默认值为 是;
修改时,业务逻辑是
   如果b为空,则 a的“入选否” 的值应为false;
   如果b是X级,则 a的“入选否” 的值应为false;
   如果b是Y级,则 a的“入选否” 的值就是用户在界面设置的值。
新增时的触发器
create Trigger [dbo].[T_INSERT_APPLY_PROJECTF_FOR_is_nation]
on [dbo].[APPLY_PROJECT]
for INSERT
as 
declare   @nation   varchar(2)
select @nation=APPROVE_PROJECT.is_nation from dbo.APPROVE_PROJECT,APPLY_PROJECT  where APPROVE_PROJECT.id=APPLY_PROJECT.approve_project_id  and APPLY_PROJECT.id in (select id from inserted)  
if @nation is not null and @nation ='是'
	update APPLY_PROJECT 
    set is_nation='是'
	where  APPLY_PROJECT.id in (select id from inserted)  
else
	update APPLY_PROJECT 
    set is_nation = '否'
	where  APPLY_PROJECT.id in (select id from inserted)  


修改时的触发器
create Trigger [dbo].[T_UPDATE_APPLY_PROJECTF_FOR_is_nation]
on [dbo].[APPLY_PROJECT]
for UPDATE
as 
begin
	if update(approve_project_id) or update(is_nation) 
	declare  @nation   varchar(2)
	select @nation=APPROVE_PROJECT.is_nation from dbo.APPROVE_PROJECT,APPLY_PROJECT  where APPROVE_PROJECT.id=APPLY_PROJECT.approve_project_id  and APPLY_PROJECT.id in (select id from deleted)
	if @nation is null or @nation <>'是'	
		update APPLY_PROJECT 
		set APPLY_PROJECT.is_nation='否'
		where id in (select id from deleted) 
end



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics