在将记录插入该表之前/之后删除表中的旧记录,并仅在记录计数大于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
答案 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 )