【发布时间】:2014-03-12 06:29:57
【问题描述】:
为了学习,我在 SQLite 中创建了两个相同的表,并试图弄清楚如何防止将重复项从一个表插入到另一个表。 我正在使用此查询来尝试在发布记录之前找出是否存在重复项。 但是,它不能正常工作,因为仍然会插入重复项并且不会出现警告消息。
procedure TForm1.Button1Click(Sender: TObject);
begin
UNIQuery1.Close;
UNIQuery1.SQL.Clear;
UNIQuery1.SQL.Text:='SELECT * FROM TEMP2 WHERE DATE=:F1 AND user=:F2';
UNIQuery1.Params.ParamByName('F1').Value:=UNITable1.FieldByName('DATE').Value;
UNIQuery1.Params.ParamByName('F2').Value:=UNITable1.FieldByName('USER').Value;
UNIQuery1.Open;
if UNIQuery1.isempty then begin
UNIQuery1.Close;
UNIQuery1.SQL.Clear;
UNIQuery1.SQL.Text:='INSERT INTO TEMP2 (DATE,USER) select DATE,USER FROM TEMP1';
UNIQuery1.ExecSQL;
UNITable2.Refresh;
end
else
ShowMessage('Record already exists !');
end;
有人可以告诉我如何正确地做到这一点吗?表只有 3 个字段:ID (Autoinc)、DATE(date) 和 USER (char)。两者是相同的。所以基本上我希望程序告诉我 USER 和 DATE 已经存在于我试图发布相同记录的表中。
编辑;使用 Sir Rufos 查询奇怪的事情发生了:
【问题讨论】:
-
在
(date, user)上创建唯一索引