SQL Server 触发器(表数据添加)

近日在做内部的一个项目时,用到了触发器,将部分代码贴出来,以供参考。
-- =============================================
-- Author:		QW
-- Create date: 2011-5-5
-- Description:	项目信息表触发器,添加时触发
-- =============================================
ALTER TRIGGER [dbo].[TRIGGER_INSERT_PROJECT_INFO]
   ON [dbo].[project_info]
   AFTER INSERT
AS 

declare @interval_day int,@oper_cond varchar(10)
declare @pStartTime datetime,@pEndTime datetime,@Id int,@pType int,@pTypeChild int,@pTypeChildZhuanye int
--检验游标cur_insert的存在性,如果存在就删除 
if cursor_status('global', 'cur_insert') <> -3 
or cursor_status('local', 'cur_insert') <> -3 
begin 
	deallocate cur_insert             
end

--添加时触发
if exists(select 1 from inserted)
begin
	declare cur_insert cursor local for
	select Id,pName,pStartTime,pEndTime,pType,pTypeChild,pTypeChildZhuanye,pCreateUser from inserted
	
	open cur_insert --打开游标
	fetch next from cur_insert into @Id,@pName,@pStartTime,@pEndTime,@pType,@pTypeChild,@pTypeChildZhuanye,@pCreateUser
	while @@fetch_status = 0
	begin	
		
		if not exists(select * from exc_projrun_t where ProjectID=@Id)
		BEGIN
			
			insert into exc_projrun_t(ProjectID,OperatingCondition,NodeName,PreviousNode,ProjectState,UpdateTime)
			values(@Id,@oper_cond,'登记审核','项目登记','运行中',Current_Timestamp);
			
		END
		
							
		--下一行
		fetch next from cur_insert into @Id,@pName,@pStartTime,@pEndTime,@pType,@pTypeChild,@pTypeChildZhuanye,@pCreateUser
	end
	
	close cur_insert
	
	deallocate cur_insert 
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server触发器是一种特殊类型的存储过程,它会在指定的上发生特定事件时自动执行。当上发生更新操作时,可以通过触发器来更新数据触发器通常与INSERT、UPDATE和DELETE语句一起使用。当这些语句被执行时,触发器会自动调用并执行相关的操作。 在创建触发器时,需要指定触发器要绑定到的以及要触发的事件类型(INSERT、UPDATE、DELETE)。然后,可以编写触发器的主体部分,该部分包含在触发器被调用时要执行的SQL语句。 当触发器绑定的上发生与触发器事件类型匹配的操作时,触发器会自动执行。在执行过程中,可以使用内置的Inserted和Deleted来引用被修改的数据。Inserted包含插入或更新操作所添加或修改的行,而Deleted包含删除或更新操作所删除或修改的行。 通过在触发器的主体部分编写更新操作的SQL语句,可以实现对数据的更新。这些更新可以是根据触发器事件导致的数据更改,也可以是根据其他或计算逻辑生成的数据。 使用触发器更新数据的好处是,在数据变更时自动执行相关操作,而无需手动干预。这可以保证数据的一致性和完整性,并减少人为错误的可能性。 需要注意的是,使用触发器更新数据时,应谨慎操作,避免造成循环触发和性能问题。同时,触发器的相关操作应经过充分的测试和验证,确保其正常运行并达到预期的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值