在插入之前检查数据是否存在并返回true / false?

时间:2012-10-20 06:53:56

标签: mysql insert

解决方案:

在多个列上放置唯一约束

ALTER TABLE rating ADD UNIQUE KEY ( id , id ); 

我想在我的评分系统中插入一个分数。我希望能够插入数据,如果它不存在。如果确实存在,我也希望相同的查询返回true / false。

我调查了INSERT IGNORE,但是我默默地失败了,所以我不知道如何检查。

我知道我可以尝试SELECT ... WHERE id = 1而不是插入,但是我想把它移到一个插件上,这可能吗?

2 个答案:

答案 0 :(得分:1)

如果对要检查的列使用唯一键约束,则如果没有数据,则正常插入将成功,或者如果已经存在匹配,则由于唯一键约束而失败。 / p>

答案 1 :(得分:0)

INSERT INTO `rating` (value1) 
SELECT 'your rate for  value1' FROM `rating` 
WHERE NOT EXISTS (SELECT * FROM `rating` 
WHERE value1='your rate for  value1' ) LIMIT 1;