我有两张表Account(主表)Account_Day,我想将插入ACCOUNT表中数据按天(我截取Account时间的前十位),按类型(OperationType),将收入金额(Earning)和支出(Defray)统计起来放到Account_Day表中!
我的触发器是这么写的!错误了,谁指点下。
ALTER TRIGGER [dbo].[Tg_Account_Day] on [dbo].[Account]
for insert
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @StartTime datetime,
@Time_Day varchar(10),
@Earning numeric(18, 6),
@Defary numeric(18,6),
@OperationType varchar(50)

select @StartTime=StartTime(主表中记录时间的列) from Account
set @Time_Day=convert(varchar(10),@StartTime,120) select @Earning=sum(Earning) from Account
where convert(varchar(10),StartTime,120)=@Time_Day and OperationType=@OperationType select @Defary=sum(Defray) from Account
where convert(varchar(10),StartTime,120)=@Time_Day and OperationType=@OperationType if not exists(select 0 from Account_Day where [Time_Day]=@Time_Day)
begin 

insert into Account_Day(
[Time_Day],
[Earning],
[Defary],
[OperationType])
values
(
@Time_Day,
@Earning,
@Defary,
@OperationType
)

end
    -- Insert statements for trigger here

END

解决方案 »

  1.   


    ALTER TRIGGER [dbo].[Tg_Account_Day] on [dbo].[Account]
    for insert
    AS  
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;INSERT INTO Account_Day([Time_Day],[Earning],[Defary],[OperationType])
    SELECT [Time_Day],[Earning],[Defary],[OperationType] FROM INSERTEDEND
    没试过,不知道行不
      

  2.   

    你这个要求好像不适合触发器,适合JOB
      

  3.   

    这种需求根本不需要触发器或JOB,视图就解决了...Oracle的物化视图最适合干这个...