做的一个小东西。已经用程序弄好了。 不过现在想用数据库来完成。所以想到了触发器。
有大神来写写么,让小弟学习一下!

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) )