火鸟使用Zeoslib和Delphi插入不同的数据
-
04-10-2019 - |
题
我正在使用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
不隶属于 StackOverflow