--根据插入“污染源基本信息”表的数据,建立新的表并给表建立insert触发器
create trigger AddPollution on 污染源基本信息 for insert
as
declare @objCode varchar(12)
declare @newTableName varchar(15)
declare @objTableName varchar(18)
declare @Unit 废水排放量单位

select @objCode = i.污染源编码 from inserted i

set @newTableName = 'Poll_'+@objCode
set @objTableName = 'PollObj_'+@objCode
set @Unit='TNE'

exec('create table'+@newTableName+'(
    ID bigint,
    排放口编码 varchar(15),
    监测时间 dateTime,
    流量 decimal )' )
exec('proc_OnHour '+@newTableName+','+@objCode+','+@Unit)
exec('create table'+@objTableName+'(
    ID bigint,
    排放口编码 varchar(15),
    检测时间 datetime,
    污染物编码 char(3),
    浓度 decimal,
    浓度单位 水污染物浓度单位,
    实时排放量 decimal,
    实时排放量_单位 污染物排放量单位,
    状态 污染物检测数据状态)' )
exec('proc_Obj_OnHour '+@objTableName+','+@objCode)

drop trigger Addeffluent

--根据插入“污水处理厂基本信息”表的数据,建立新的表并给表建立insert触发器

create trigger Addeffluent on 污水处理厂基本信息 for insert
as
declare @objCode varchar(12)
declare @newTableName varchar(17)
declare @objTableName varchar(20)
declare @Unit char(3)

select @objCode = i.污水处理厂编码 from inserted i

set @newTableName = 'Poll_'+@objCode
set @objTableName = 'PollObj_'+@objCode
set @Unit = 'TNE'

exec('create table '+@newTableName+'(
    ID bigint,
    排放口编码 varchar(15),
    监测时间 dateTime,
    流量 decimal)' )
exec('proc_OnHour '+@newTableName+','+@objCode+','+@Unit)
exec('create table '+@objTableName+'(
    ID bigint,
    排放口编码 varchar(15),
    监测时间 datetime,
    污染物编码 char(3),
    浓度 decimal,
    浓度_单位 水污染物浓度单位,
    实时排放量 decimal,
    实时排放量_单位 污染物排放量单位,
    状态 污染物监测数据状态)' )
exec('proc_Obj_OnHour '+@objTableName+','+@objCode)

drop proc proc_Obj_OnHour
--污染源_废水排放口污染物小时数据--------------------------------------------------------------------
create proc proc_Obj_OnHour
@TableName varchar(20),
@objCode varchar(12)

as

print @TableName

exec('create trigger tgrObj'+@objCode+'on '+@TableName+' for insert
as

declare @contamination char(3)
declare @ndavg decimal
declare @ndmax decimal
declare @ndmin decimal
declare @ndavgUnit 水污染物浓度单位
declare @ndmaxUnit 水污染物浓度单位
declare @ndminUnit 水污染物浓度单位
declare @iavg decimal
declare @imax decimal
declare @imin decimal
declare @iavgUnit 废水排放量单位
declare @imaxUnit 废水排放量单位
declare @iminUnit 废水排放量单位
declare @time datetime
declare @wry char(12)
declare @pfk char(15)

select @iavg = avg(t0.实时排放量),@imax = max(t0.实时排放量),@imin = min(t0.实时排放量),@time = max(t0.监测时间),

@ndavg = avg(t0.浓度),@ndmax = max(t0.浓度),@ndmin = min(t0.浓度)

from
    '+@TableName+' t0,inserted i where
    datediff(hour,t0.监测时间,i.监测时间)=0
    and t0.排放口编码 = i.排放口编码

select @pfk = i.排放口编码,@iavgUnit = i.实时排放量_单位,@imaxUnit= i.实时排放量_单位,@iminUnit=i.实时排放量_单位,

@contamination = i.污染物编码,@ndavgUnit = i.浓度_单位,@ndmaxUnit = i.浓度_单位,@ndminUnit=i.浓度_单位

from inserted i

set @wry = '+@objCode+'

delete from 污染源_废水排放口污染物小时数据 where datediff(hour,日期时间,@time)=0
insert into 污染源_废水排放口污染物小时数据(
    污染源编码,
    排放口编码,
    日期时间,
    污染物编码,
    最小浓度,
    最小浓度_单位,
    平均浓度,
    平均浓度_单位,
    最大浓度,
    最大浓度_单位,
    最小排放量,
    最小排放量_单位,
    平均排放量,
    平均排放量_单位,
    最大排放量,
    最大排放量_单位

) values(
    @wry,
    @pfk,
    @time,
    @contamination,
    @ndmin,
    @ndminUnit,
    @ndavg,
    @ndavgUnit,
    @ndmax,
    @ndmaxUnit,
    @imin,
    @iminUnit,
    @iavg,
    @iavgUnit,
    @imax,
    @imaxUnit
)


')

drop proc proc_onHour
--污染源_污水排放口小时数据-------------------------------------------------------------------------------------------------

create proc proc_OnHour
@TableName varchar(17),
@objCode varchar(12),
@objUnit char(3)

as

print @objUnit

print @TableName

print @objCode

exec('

create trigger tgr'+@objCode+'
on '+@TableName+' for insert
as
declare @iavg decimal
declare @imax decimal
declare @imin decimal
declare @iUnit char(3)
declare @time datetime
declare @wry char(12)
declare @pfk char(15)

set @wry = '+@objCode+'
set @iUnit = '''+@objUnit+'''

select @iavg = avg(t0.流量),@imax = max(t0.流量),@imin = min(t0.流量),@time = max(t0.监测时间) from
    '+@TableName+' t0,inserted i where
    datediff(hour,t0.监测时间,i.监测时间)=0
    and t0.排放口编码 = i.排放口编码

select @pfk = i.排放口编码 from inserted i

delete from 污染源_废水排放口小时数据 where datediff(hour,日期时间,@time)=0
insert into 污染源_废水排放口小时数据(
    污染源编码,
    排放口编码,
    日期时间,
    最小流量,
    最小流量_单位,
    平均流量,
    平均流量_单位,
    最大流量,
    最大流量_单位
) values(
    @wry,
    @pfk,
    @time,
    @imin,
    @iUnit,
    @iavg,
    @iUnit,
    @imax,
    @iUnit )

)
posted on 2008-01-18 15:29  Madream.F  阅读(236)  评论(0编辑  收藏  举报