每个触发器有两个特殊的表;插入表Inserted 和 删除表 deleted
这两个表示逻辑表,这由系统管理的,存储在内存中,不是储存在数据空中,
因此不允许用户直接对其修改,两个表的结构与触发器作用的表结构相同,
这两个表保存在内存中,触发器完成工作,就会删除
这两个表保存被影响到的原数据和新数据
这两个表是只读,用户不能向这两个表写入内容.只可以查询
如果是修改操作,新数据保存在Inserted临时表,修改数据保存在Deleted临时表中
BEGIN
-- Type the SQL Here.
-- 定义变量
DECLARE @countN INT
DECLARE @tm VARCHAR(100)
DECLARE @stcd VARCHAR(50)
-- Inserted 插入的数据都会保存在此临时表中
SELECT @tm = CONVERT(VARCHAR(100),TM,20),@stcd =stcd FROM Inserted
-- 判断 插入时间是否符合规定时间
SELECT @countN=COUNT(*) from WR_KG_TG_TM
WHERE STCD =@stcd
AND convert(varchar(10),datepart(YYYY,GETDATE()))+'-' + startTime<=CONVERT(VARCHAR(100),@tm,23)
AND convert(varchar(10),datepart(YYYY,GETDATE()))+'-' + endTime>=CONVERT(VARCHAR(100),@tm,23)
--不符合,修改下面两章表
if(@countN<=0)
BEGIN
PRINT '不在范围内'
UPDATE WR_ST_MQ_R SET Q =0 WHERE STCD =@stcd AND TM =@tm
UPDATE WR_ST_Z_R SET z = 0 WHERE STCD=@stcd AND TM =@tm
END
--
ELSE
BEGIN
PRINT '在范围内'
END
END