背景:目前正在做接口[生化分析仪数据采集]
功能描述:
刚刚能把数据采集回来,在数据库中都以单独的表形式存放。
同事说:希望能根据 体检号【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
这样做比较简单,但是感觉还是多此一举,直接将采集出来的数据,更新到同事建的表中应该更好
继续学习数据库中功能...
希望给希望的朋友帮助...