当前位置: 代码迷 >> Sql Server >> 有闲空的大神没,大家来写个触发器
  详细解决方案

有闲空的大神没,大家来写个触发器

热度:27   发布时间:2016-04-24 09:30:57.0
有空闲的大神没,大家来写个触发器~
本帖最后由 sinat_15262463 于 2014-11-17 15:36:27 编辑
做的一个小东西。已经用程序弄好了。      不过现在想用数据库来完成。所以想到了触发器。

有大神来写写么,让小弟学习一下!

create table tab_Record
(
DeviceId varchar(16) not null,
AddTime datetime  default getdate() null,
RecordTime datetime null,
Value int null,
CH1 char(8) null,
CH2 char(8) null,
CH3 char(8) null,
CH4 char(8) null
)


要求:当有新数据插入的时候,(这里是不是有点问题?)

比较新插入的RecordTime 和目前数据里已有的RecordTime 最新时间。

如果新插入的RecordTime 小于已有的RecordTime ,不处理。  

如果时间相差2S以内不处理。 

 如果相差2S以上。则进行插入操作。  插入的数据,以数据库已有的RecordTime 最新时间为基准,每2S插入一条数据。数据的内容和数据库已有的RecordTime 最新时间的那条数据相同。  直到相差不足2S。

上面的思路可能有些问题,可以各自按自己的思路来。达到目的就行

------解决思路----------------------
CREATE TRIGGER TRG_tab_Record_Insert
ON tab_Record INSTEAD OF INSERT
AS
BEGIN
DECLARE @MAXTIME DATETIME
SELECT @MAXTIME=DATEADD(SECOND,2,MAX(RecordTime))FROM tab_Record
IF @MAXTIME IS NULL
INSERT INTO tab_Record
SELECT * FROM INSERTED
ELSE
INSERT INTO tab_Record
SELECT * FROM INSERTED
WHERE RecordTime>=@MAXTIME
END

------解决思路----------------------
CREATE TRIGGER tr_ctab_Record ON tab_Record
    INSTEAD OF INSERT
AS
SET NOCOUNT ON ;
INSERT  INTO tab_Record
        SELECT  *
        FROM    INSERTED AS i
        WHERE   NOT EXISTS ( SELECT 1
                             FROM   tab_Record
                             WHERE  RecordTime > DATEADD(s, -2,
                                                         i.RecordTime) )
  相关解决方案