如果它不存在,我一直在尝试在数据库中插入一条记录,这是查询:
insert into evt(e_id, t_id)
values( '1597', '4')
where not exists( select id from evt where e_id = '4' and t_id = '1597');
Run Code Online (Sandbox Code Playgroud)
该查询返回以下错误:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“where not exists( select id from evt where e_id = '4' and t_id = ' at line 1
我不明白为什么它不起作用
如果你想防止数据库中的重复,那么让数据库来做这个工作。使用唯一约束或索引:
create unique index unq_evt_eid_tid on evt(e_id, t_id);
Run Code Online (Sandbox Code Playgroud)
这保证了数据完整性,无论值是如何插入或更新的。数据库为您完成工作。
然后你可以在插入时防止错误,通过使用on duplicate key update:
insert into evt(e_id, t_id)
values (1597, 4)
on duplicate key update e_id = values(e_id);
Run Code Online (Sandbox Code Playgroud)
在on duplicate key从产生误差防止的代码。
我还从值中删除了单引号。Id 通常是数字。如果它们确实是字符串,请重新添加引号。