如何让delphi数据库不添加重复的记录?
下面的代码为我添加一条新记录的添加按钮,同一天的记录可以一直添加;我要让数据库里一天只存在一条记录,如果这天的记录已经存在了就不能再添加了。只能修改这条记录.要如何实现语...
下面的代码为我添加一条新记录的添加按钮, 同一天的记录可以一 直添加;
我要让数据库里一天只存在一条记录,如果这天的记录已经存在了就不能再添加了。只能修改这条记录.
要如何实现语句?下面是我 添加按钮的代码;
修改按钮代码 展开
我要让数据库里一天只存在一条记录,如果这天的记录已经存在了就不能再添加了。只能修改这条记录.
要如何实现语句?下面是我 添加按钮的代码;
修改按钮代码 展开
2个回答
展开全部
要实现这个我现在想到的有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
纯手打望采纳!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询