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
这样做比较简单,但是感觉还是多此一举,直接将采集出来的数据,更新到同事建的表中应该更好
继续学习数据库中功能...
希望给希望的朋友帮助...