在10秒钟内有两条记录相同则DELETE第二条啊,
这个难道很复杂吗?
这个难道很复杂吗?
解决方案 »
- 关于SQLITE的DateTime类型
- 谁能分享下NextGrid 5 的安装包呀?支持DELPHI XE
- 正则表达式匹配汉字+字符问题 在线等
- E文太差,求教这段帮助准确意思
- 一个关于treeview的问题,大家帮忙解释一下:)
- 弱弱的问:为什么使用VC spy++无法查看tlabel?
- 关于文件操作的问题
- delphi 请问如何搜索数值并修改?
- 请问,要如何才能把ListView和数据库联系到一起,即用ListView显示数据库中的内容?
- 急,急,关于备注字段(我给100分)
- 关于WWDBGRID、WWTABLE、QUERY的问题。请问如何在WWTABLE中使用QUERY,同时实现在WWDBGRID中修改数据。
- 一个程序员需知的问题。(delphi5.0)
数据库里用一个Trigger
以下是SqlServer的Example
(如果是SqlServer2000或Oracle就不必取消唯一索引,直接用Before的Trigger)Create Trigger Prevent_Multi_RegisterCard
on TBCard
for Insert (Instead of Insert/Sql2k) (Before Insert/Oracle)
as
IF (Select Count(*) From TBCard Inner Join Inserted
on TBCard.CardID = Inserted.CardID
and TBCard.RegisterTime = Inserted.RegisterTime) >1
Rollback Transaction
go
Var
CanInput:boolean=True;
在输入处
if CanInput then
begin
Try
dosomethingyourself;
Finally
CanInput:=False;
Timer1.Enabled:=True;
End;
...procedure TMainForm.Timer1Timer(Sender: TObject);
begin
CanInput:=True;
Timer1.Enabled:=False;
end;其中Timer1.Interval:=30000;//30秒
改变库内容,除非你在beforePost做判断
一般你可以先用edit输入,判断后再写入库中
这样难度不太高,容易做
Var
CanInput:boolean=True;
lastinputID:YourType;//和任意一个记录中的一个唯一标识类型相同
//在输入处
//假设newID即为上述唯一标识的值
if (CanInput) or (lastinputID<>newID) then
begin
Try
dosomethingyourself;
Finally
lastinputID=newID;
CanInput:=False;
Timer1.Enabled:=True;
End;
...procedure TMainForm.Timer1Timer(Sender: TObject);
begin
CanInput:=True;
Timer1.Enabled:=False;
end;其中Timer1.Interval:=30000;//30秒
if (最后卡号 <>当前卡号) or (最后时间 <> 当前时间) then
begin
<新增记录>
最后卡号 := 当前卡号;
最后时间 := 当前时间 ;
end ;
...