MySQL:如果不存在则插入,否则再次插入

时间:2017-08-02 01:49:05

标签: mysql database

我有一个使用32个字符的字符串作为ID的数据库表,所以当我向表中添加新数据时,查询会生成字符串ID并将数据插入表中。问题是查询可以生成重复的ID,所以我做的是使用IGNORE如果ID存在则不插入

以下是代码:

INSERT IGNORE INTO contacts (id_contacts, user_id, contact_id, confirmed ) 
values ((substring(MD5(UUID()), -32)),1,2,0)

如何重复查询,直到ID不存在并插入数据?

2 个答案:

答案 0 :(得分:0)

无需更改查询只需在id_contacts列上创建唯一索引,例如

CREATE UNIQUE INDEX idx_id_contacts ON contacts (id_contacts);

答案 1 :(得分:-1)

评论时间有点长。

如果您需要一个不重复的唯一ID,那么。 。 。想到auto_increment

create table contacts (
    contact_id int auto_increment primary key,
    . . .

如果您真的想在列中使用uuid,请单独定义并声明它是唯一的。当然,那么你将不得不处理该列的唯一性违规。