INSERT 查询唯一记录-Mysql

INSERT query for unique records-Mysql

我有一个table这样的

id | name | zip 
1  | abc  | 1234
2  | xyz  | 4321 
3  | asd  | 1234

我想插入记录,这样 idname 在插入时可能具有相同的值,但如果 zip 的值对于该特定记录也是相同的没有插入。如果没有,应该插入。

例如: 我可以插入另一行,其中包含 id=1 的值和 name= abc 的值,但如果该记录也有 zip=1234不应该插入。

我怎样才能做到这一点。

创建两个唯一索引:

create unique index idx_table_name_zip on table(name, zip)
create unique index idx_table_id_zip on table(id, zip)

然后数据库将保证您想要强制执行的唯一性。

根据 id、name 和 zip 组合创建主键

ALTER TABLE table ADD PRIMARY KEY(id, name, zip)

有了这个,如果所有三列都相同,则 row/record 被标记为重复,否则它是一个非常好的非重复记录。

查看更多内容here

您需要在插入行之前进行检查,例如

select * from table where zip = @zip and name = @name and id = @id

如果没有行 return 你可以插入...