SQL Server2000触发器公式问题 一定追加分数。

来源:百度知道 编辑:UC知道 时间:2024/05/28 20:31:46
表设11列,列名为:THEDAY、A1、A2、A3、B1、B2、B3、S1、S2、S3、SS,第1列是日期,其他都是numeric型,前5列THEDAY、A1、A2、B1、B2接收外部数据,其他列由A1、A2、B1、B2的数计算而得:
A3=A1*A2
B3=B1*B2
S1=A1+B1
S3=A3+B3
S2=S3/S1
SS=S1+前一条记录的SS
想在接收到外部数据后,自动在其他空列中依次填入计算结果,触发器如下:
CREATE TRIGGER chainchange ON dbo.表2009
FOR INSERT
AS
declare @id smalldatetime
if ((select count(*) from inserted)>0)
begin
set @id=(select THEDAY from inserted)
update 表2009
set A3=((select A1 from inserted) * (select A2 from inserted) / 1000) where THEDAY=@id
update 表2009
set B3=((select B1 from inserted) * (select B2 from inserted) / 1000) where THEDAY=@id
update 表2009
set S1=((select A1 from inserted)+(select B1 from inserted)) where THEDAY=@id
update 表2009
set S3=((select A3 from inserted)+(select B3 from inserted)) where THEDAY=@id
update 表2009
set S2=((select S3 from inserted)*1000/(select S1 from inserted)) where THEDAY=@id
update 表2009

写个存储过程吧,大概就是这个样子,是看到上次一个问题写的
create proc sp_test_insert
@t1 numeric,
@t2 numeric,
@t3 numeric,
@t4 numeric
as
begin
declare @t5 float ,@t6 float,@t7 float ,@t8 float,@t9 float, @t10 float,@tmp float
set @t5=@t2/@t1
set @t6=@t4/@t3
set @t7=@t1+@t3
set @t8=@t2+@t4
set @t9=@t8/@t7
select identity(int,1,1) as id,* into # from test
select @tmp=t7 from # where id in (select max(id) from #)
set @t10=@t7+@tmp
insert into test values(@t1,@t2,@t3,@t4,@t5,@t6,@t7,@t8,@t9,@t10)
end