想在业务需求,需要进行批处理插入,每条数据都有状态值,在插入的过程中,根据状态值,处理数据。想知道触发是行触发,还是整体触发?触发器

解决方案 »

  1.   

    不用管触发是行触发,还是整体触发只用管inserted
      

  2.   

    上面说的没错,比如你UPDATE一条语句可能会影响到N条记录,但是所有的记录都会在INSERTED表中捕获
      

  3.   

    另外说一下触发器是数据库服务器中发生事件时自动执行的特种存储过程,所以DMLTrigger根据表或视图的 INSERT、UPDATE 或 DELETE 语句
      

  4.   

    数据插入部分
    insert into dbo.T_DATA_MeanConcentration
    select fd_sectionID,@startDate,@endDate,@sectionType,1,@createDate,null,null,null,null,null,
    dbo.T_fn_d1_Decimal(avg(convert(float,dbo.T_fn_0_LimtValue(fd_value1,2))),@v1),
    dbo.T_fn_d1_Decimal(avg(convert(float,dbo.T_fn_0_LimtValue(fd_value2,2))),@v2),
    dbo.T_fn_d1_Decimal(avg(convert(float,dbo.T_fn_0_LimtValue(fd_value3,2))),@v3),
    dbo.T_fn_d1_Decimal(avg(convert(float,dbo.T_fn_0_LimtValue(fd_value4,2))),@v4), 
    dbo.T_fn_d1_Decimal(avg(convert(float,dbo.T_fn_0_LimtValue(fd_value5,2))),@v5)
    MAX(sdi_showSectionName),MAX(sdi_showRiverName),MAX(sdi_showRiverCode),MAX(sdi_showWaterArea),
    MAX(sdi_showAssessmentCity),MAX(sdi_showAssessmentCityCode),MAX(sdi_showMonitorCity),
    MAX(sdi_showMonitorCityCode),MAX(sdi_showStationName),MAX(sdi_showStationCode),MAX(sdi_sectionOrderby)
    from dbo.T_DATA_BasicDataApply x
    left join (select sdi_sectionType,sdi_sectionID,sdi_month,sdi_year,sdi_showStationName,sdi_showStationCode,
    sdi_showSectionName,sdi_showRiverName,sdi_showRiverCode,sdi_showWaterArea,sdi_showAssessmentCity,
    sdi_showAssessmentCityCode,sdi_showMonitorCity,sdi_showMonitorCityCode,sdi_sectionOrderby
       from dbo.T_SYS_SectionDetailInfo 
       where sdi_sectionType=@sectionType
    and sdi_year+'-'+sdi_month=@endDate) y
    on x.fd_sectionID=y.sdi_sectionID and x.fd_year=y.sdi_year 
    and x.fd_month=y.sdi_month and x.fd_sectionType=y.sdi_sectionType
    where fd_sectionType=@sectionType
    and fd_year+'-'+fd_month between @startDate and @endDate
    group by fd_sectionID
    set @intErrorCode=@@error触发器部分:
    select 
    @sectionType=mc_sectionType,
    @startDate=mc_startDate,
    @endDate=mc_endDate,
    @sectionAttr=mc_sectionAttr
    from inserted x插入的过程中 需要从 inserted 表中获取 状态值 mc_sectionAttr,想问下,这样获取 mc_sectionAttr 值,是每条的值,还是整体的值?
      

  5.   

    你如果要这样来做的话,就建议使用游标,从inserted中遍历获取状态值
      

  6.   

    这样获取 mc_sectionAttr 值,只是一條值,而不是全部值