MSSQL 中触发器插入问题

Karl_zhujt 2013-09-06 04:11:37
想在业务需求,需要进行批处理插入,每条数据都有状态值,在插入的过程中,根据状态值,处理数据。想知道触发是行触发,还是整体触发?
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw_0736 2013-09-06
  • 打赏
  • 举报
回复
这样获取 mc_sectionAttr 值,只是一條值,而不是全部值
KeepSayingNo 2013-09-06
  • 打赏
  • 举报
回复
你如果要这样来做的话,就建议使用游标,从inserted中遍历获取状态值
Karl_zhujt 2013-09-06
  • 打赏
  • 举报
回复
数据插入部分
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 值,是每条的值,还是整体的值?
KevinLiu 2013-09-06
  • 打赏
  • 举报
回复
另外说一下触发器是数据库服务器中发生事件时自动执行的特种存储过程,所以DMLTrigger根据表或视图的 INSERT、UPDATE 或 DELETE 语句
KevinLiu 2013-09-06
  • 打赏
  • 举报
回复
上面说的没错,比如你UPDATE一条语句可能会影响到N条记录,但是所有的记录都会在INSERTED表中捕获
lzw_0736 2013-09-06
  • 打赏
  • 举报
回复
不用管触发是行触发,还是整体触发 只用管inserted

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧