在表中插入记录之前/之后删除旧记录,如果记录计数为> 2

时间:2016-11-29 03:05:16

标签: sql sql-server-2008 sql-server-2012 postgresql-9.2

在将记录插入该表之前/之后删除表中的旧记录,并仅在记录计数大于2时删除旧记录。

如何实现以下场景:

表名:样本

Id  Name    Date    Position
1   phani   2013    Trainee
2   phani   2014    Developer

现在我们正在为phani再插入一条记录

即3 phani 2015 sr.Developer

结果

Id  Name    Date    Position
1   phani   2013    Trainee
2   phani   2014    Developer
3   phani   2015    sr.Developer

现在我们必须创建一个触发器,该触发器必须删除旧记录
(表示必须删除2013年年度记录。)

预期OutPut:

Id  Name    Date    Position
2   phani   2014    Developer
3   phani   2015    sr.Developer

现在让我们再说2016年的职位从sr.developer改为项目经理。

那段时间必须删除并插入新记录,如下:

Id  Name    Date    Position
3   phani   2015    sr.Developer
4   phani   2016    Project Manager

2 个答案:

答案 0 :(得分:0)

听起来你已经知道了我们的答案。创建一个{{1}}触发器,检查给定名称的行数是否大于2。如果是,请找到与此名称匹配的最旧日期,并删除具有该日期和名称的所有行。

答案 1 :(得分:0)

假设您使用SQL Server作为数据库服务器。以下查询将产生您要查找的结果。您必须将此逻辑包装到触发器定义中。

DELETE T1 FROM 
TableName T1 
WHERE T1.[Date] = ( SELECT MIN([Date]) 
                    FROM TableName T2 
                    WHERE T1.ID = T2.ID 
                    HAVING COUNT(*) > 2 )