欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

在sql server建立一个触发器对表进行新增时删除数据要如何写

更新时间: 2014-01-05 02:18:21 责任编辑: Author_N1

 

在SQL SERVER建立一个触发器对表进行新增时删除数据要怎么写
现在有一张表px_mian,表里面要用到的字段有opdate(操作时间),px_startdate(开始时间)
opdate是导入数据的时间,而px_startdate是培训开始时间
比如今天是3月22号,那么我就只能导入3月7号之后的数据,也就是本月数据,不能导入其他月份的数据,如果导入了就要对其进行删除。
比如到了4月1号时,那么我就能导入4月7号之前的数据,也就是3月份和4月份的数据,如果导入其他月份的数据也要对其删除。
总体来说就是本月可以导入上月和本月数据但必须是在本月7号前,如果7号之后就只能导入本月数据,请问这个删除语句怎么写了?O(∩_∩)O谢谢
--参考方法--
不用写删除语名。
做一个instead of 触发器就行了。
CREATE TRIGGER InsteadTrigger on px_mian
INSTEAD OF INSERT
AS
BEGIN
  if ...
  INSERT INTO px_mian
       SELECT * FROM inserted
END;
--参考方法--
1、触发器少用,管理困难系统大了你头就大了
2、删数据应该谨慎不要做成自动。大批量的操作更应该考虑性能,不应该一条一条的操作,最好做一个SP来处理批次新增删除处理。
3、然后这个条件很简单
你需要获得两个日期范围,你再根据这两个开始结束日期做,删除会新增限制就行



declare @nowdate datetime
set @nowdate=getdate()
--set @nowdate='2013/03/06'
declare @begindate varchar(10)
declare @enddate varchar(10)
if datepart(dd,@nowdate)<7
begin
select @begindate=left(convert( varchar(10),dateadd(month,-1,@nowdate),111),8)+'01'
select @enddate=left(convert( varchar(10),@nowdate,111),8)+'07'
end
else
begin
set @begindate=left(convert( varchar(10),getdate(),111),8)+'07'
set @enddate =convert(varchar(10),dateadd(dd,-1,left(convert( varchar(10),dateadd(month,1,@nowdate),111),8)+'01'),111)
end

select @begindate,@enddate

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:21
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8288/
本文WWW.DOC100.NET DOC100.NET版权所有。