我正在使用Zeos 7和Delphi 2009,并想检查在将数据发布到数据库之前,在特定字段下的数据库中是否已经在数据库中。

示例:字段关键字
奶酪,鼠标,陷阱的值

tblkeywordKEYWORD.Value = Cheese

以下是什么问题?还有更好的方法吗?

zQueryKeyword.SQL.Add('IF NOT EXISTS(Select KEYWORD from KEYWORDLIST ='''+
  tblkeywordKEYWORD.Value+''')INSERT into KEYWORDLIST(KEYWORD) VALUES ('''+
  tblkeywordKEYWORD.Value+'''))');
zQueryKeyword.ExecSql;

我尝试使用IBExpert中的唯一约束,但是它给出以下错误:

无效的插入或更新值:对象列受约束 - 否2个表行可以具有重复的列值。尝试将重复值(可见为主动交易)存储在唯一索引“ unq1_keywordlist”中。

有帮助吗?

解决方案

考虑使用更新或插入或合并语句:

update or insert into KEYWORDLIST (KEYWORD) values(:KEYWORD) matching(KEYWORD)

有关详细信息,请检查Firebird安装文件夹中的以下文档:

  • doc sql.extensions readme.update_or_insert.txt
  • doc sql.extensions readme.merge.txt
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top