首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

触发器更行上笔记录有关问题

2013-03-27 
触发器更行上笔记录问题有一个表:tb(品名,开始日期,截止日期)新增记录或修改开始日期后,更新同品名上笔记

触发器更行上笔记录问题
有一个表:

tb(品名,开始日期,截止日期)

新增记录或修改开始日期后,更新同品名上笔记录的截止日期=新增记录的开始日期-1




[解决办法]


DECLARE @t TABLE(品名 VARCHAR(10),sd DATETIME ,ed DATETIME);
INSERT INTO @t SELECT 'a','2012-01-01','2012-05-05'
UNION ALL SELECT 'a','2012-02-06','2012-03-06'
UNION ALL SELECT 'a','2012-02-15','2012-05-05'
UNION ALL SELECT 'b','2012-02-06','';

--比入插入一条 'a','2012-02-20',''

INSERT INTO @t SELECT 'a','2012-02-20','';

SELECT * FROM @t;

;WITH cte AS (
SELECT rn=ROW_NUMBER() OVER(PARTITION BY 品名 ORDER BY sd ),* FROM @T
)
UPDATE a SET a.ed=b.sd-1 FROM cte a LEFT JOIN cte b ON a.品名=b.品名 AND a.rn=b.rn-1
WHERE b.品名='a' AND b.sd='2012-02-20' AND b.ed='' --这里是条件

SELECT * FROM @t

热点排行