如何让delphi数据库不添加重复的记录?

下面的代码为我添加一条新记录的添加按钮, 同一天的记录可以一 直添加;
我要让数据库里一天只存在一条记录,如果这天的记录已经存在了就不能再添加了。只能修改这条记录.
要如何实现语句?下面是我 添加按钮的代码;

修改按钮代码

要实现这个我现在想到的有2种方法:

    通过delphi控制

    通过sqlserver控制

下面一个一个说:

1: 在插入之前首先查询, 查询当天的记录, 如果存在则退出过程[或者询问用户是否修改]

With DataModule.Select_inf do begin
  Close;
  slq.Clrea;
  sql.add('Select * from tb1 where CONVERT(nvarchar(10), date_type_field, ');
  sql.add('120) = CONVERT(nvarchar(10), getdate(), 120)');
  //当然这里的条件按具体情况写
  open;
  If Not Isempty then begin
    Application.messagebox('存在当天记录, 是否修改?', '提示', MB_YESNO) = ID_NO then Exit;
    //这里写如果用户按了是, 那么进行修改   插入一段begin..end;
  end;
end;

2:通过数据库触发器控制

If OBJECT_ID('TR_STOP_INSERT_ON_TODAY') Is Not NULL  --触发器名称
   DROP TRIGGER TR_STOP_INSERT_ON_TODAY
   GO
   
CREATE TRIGGER TR_STOP_INSERT_ON_TODAY 
ON TB1
FOR INSERT
WITH ENCRYPTION
AS
DECLARE @i_REC int
--获取插入之后的当天记录条数 存入@i_REC int, 大于1则报错, 并阻止插入

SELECT @i_REC = COUNT(*) FROM TB1   WHERE CONVERT(nvarchar(10), date_type_field, 120) = CONVERT(nvarchar(10), GETDATE(), 120) 
GROUP BY CONVERT(nvarchar(10), date_type_field, 120)
If @i_REC > 1
begin
  raiserror('存在当天记录, 请勿插入重复记录[已阻止]', 16, 1)
  rollback tran
end

 

纯手打望采纳!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-12
再开一个TABLE 或QUERY
把当前日期做为参数查询,如果查询结果>1就禁止增加,改为搜索定位再编辑。。
相似回答