2016-11-29 85 views
0

删除表中的旧记录之前/之后将记录插入该表中,并且仅当记录时才删除旧记录计数大于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年的记录必须删除。):

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

现在让我们再说一次2016年,这个职位从sr.developer变成了Project Manager。

那个时候2014年记录必须予以删除,并插入新的记录,像下面:

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

您使用的是SQL Server还是Postgres?请适当地标记您的问题。 –

回答

0

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

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)