Firebird使用ZeosLib和Delphi插入不同的数据

Firebird使用ZeosLib和Delphi插入不同的数据,delphi,delphi-2009,firebird,zeos,Delphi,Delphi 2009,Firebird,Zeos,我正在使用Zeos 7和Delphi 2009,希望在将数据发布到数据库之前,检查数据库中特定字段下是否已经存在值 示例:字段关键字 奶酪、老鼠、陷阱的价值 tblkeywordKEYWORD.Value = Cheese 下面的问题是什么?还有更好的办法吗 zQueryKeyword.SQL.Add('IF NOT EXISTS(Select KEYWORD from KEYWORDLIST ='''+ tblkeywordKEYWORD.Value+''')INSERT into KE

我正在使用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中使用unique约束,但它给出了以下错误:

插入或更新值无效:对象列无效 约束-没有两个表行可以有重复的列值。 尝试在唯一索引“UNQ1\U关键字列表”中存储重复值(对活动事务可见)


考虑使用UPDATE或INSERT或MERGE语句:

update or insert into KEYWORDLIST (KEYWORD) values(:KEYWORD) matching(KEYWORD)
有关详细信息,请查看Firebird安装文件夹中的以下文档:

  • doc\sql.extensions\README.update\u或\u insert.txt
  • doc\sql.extensions\README.merge.txt

考虑使用UPDATE或INSERT或MERGE语句:

update or insert into KEYWORDLIST (KEYWORD) values(:KEYWORD) matching(KEYWORD)
有关详细信息,请查看Firebird安装文件夹中的以下文档:

  • doc\sql.extensions\README.update\u或\u insert.txt
  • doc\sql.extensions\README.merge.txt

您发布的SQL语句包含不匹配的参数,因此您不太可能出现显示的错误-Zeos应该抛出语法错误。该错误消息来自尝试在IBExpert中执行唯一约束,而不是来自SQL。您发布的SQL语句包含不匹配的参数,因此,您不太可能出现显示的错误-Zeos应该抛出语法错误。该错误消息来自尝试在IBExpert中执行唯一约束,而不是来自SQL。Dmitry本应购买您的组件,但超出了我当前的预算。嗯,您总是可以要求折扣。Dmitry本应购买您的组件,但是在我目前的预算之外。嗯,你总是可以要求折扣。