我有一个使用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不存在并插入数据?
答案 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,请单独定义并声明它是唯一的。当然,那么你将不得不处理该列的唯一性违规。