id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入這樣記錄的表的id
和name
當插入可能具有相同的價值,但如果zip
值也相同對於那個特定的記錄它沒有被插入。如果沒有,應該插入。
如:我可以插入與id=1
價值和價值的另一個一行name= abc
但如果該記錄也有zip=1234
它不應該被插入。
我該如何做到這一點。
id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入這樣記錄的表的id
和name
當插入可能具有相同的價值,但如果zip
值也相同對於那個特定的記錄它沒有被插入。如果沒有,應該插入。
如:我可以插入與id=1
價值和價值的另一個一行name= abc
但如果該記錄也有zip=1234
它不應該被插入。
我該如何做到這一點。
你需要插入行之前做了檢查,對exmpale
select * from table where zip = @zip and name = @name and id = @id
,如果沒有行返回,你可以做插入...
謝謝我現在覺得很愚蠢 –
你也可以在一個插入查詢中做同樣的事情。試試這個... INSERT INTO表VALUES(zip,name,id)ON DUPLICATE KEY UPDATE zip = zip,name = name,zip =壓縮 –
創建兩個唯一索引:
create unique index idx_table_name_zip on table(name, zip)
create unique index idx_table_id_zip on table(id, zip)
該數據庫將然後保證你要強制唯一性。
建立從ID,名稱的主鍵和zip結合
ALTER TABLE表中添加PRIMARY KEY(ID,姓名,郵編)
有了這個行/記錄標記如果所有三列都相同,則重複,否則它是非常好的非重複記錄。
檢查這更多here
如果使用不存在 – apomene
爲需要唯一的列添加唯一鍵。 –