INSERT 查询唯一记录-Mysql
INSERT query for unique records-Mysql
我有一个table这样的
id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入记录,这样 id
和 name
在插入时可能具有相同的值,但如果 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 你可以插入...
我有一个table这样的
id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入记录,这样 id
和 name
在插入时可能具有相同的值,但如果 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 你可以插入...