SQL 触发器

背景:目前正在做接口[生化分析仪数据采集]

功能描述:

    刚刚能把数据采集回来,在数据库中都以单独的表形式存放。

    同事说:希望能根据 体检号【testNo】、分析项目号【itemNo】、日期【testdate】,将我采集回来的数据自动更新到相应的位置

    这样就同事就无需根据单独的表,写代码处理


 

  想了下决定给我单独的表建个触发器,用触发器调用自定义的存储过程,进行数据的更新


 

开始工作:

   采集保存完整数据的表(shenghuayi)、(orders)

   这张表建触发器: 

                        

  sql语句:

-- =============================================
-- Author:		ancient
-- Create date:           2012-3-9
-- Description:	自动更新目标表
-- =============================================
ALTER TRIGGER [dbo].[trig_shenghuayi]
   ON  [dbo].[shenghua_fenxiyi]   --表名
   AFTER INSERT   --该表执行插入时触发
AS 
BEGIN
	exec proc_shenghuayi   --不带参数的存储过程
END

 

  自定存储过程:

-- =============================================
-- Author:		ancient
-- Create date:           2012-3-9
-- Description:	更新表
-- =============================================
CREATE PROCEDURE proc_shenghuayi
	 --@tn int, --体检号
	 --@in int, --项目号
	 --@res nvarchar(20), --结果
	 --@testdate datetime --体检日期
AS
BEGIN
	declare @tn int,@in int,@res nvarchar(20),@testdate datetime 
	select top 1 @tn = testno,@in = [id],@res = testresult,@testdate = testdate from shenghua_fenxiyi order by ID desc 
	update orders set result = @res where testno=@tn and itemno = @in and testdate = @testdate
	
END
GO

 

  这样做比较简单,但是感觉还是多此一举,直接将采集出来的数据,更新到同事建的表中应该更好

  继续学习数据库中功能...

  希望给希望的朋友帮助...

posted on 2012-03-09 16:56  ancient_sir  阅读(202)  评论(0编辑  收藏  举报