我在mysql中有3個表格artists
tracks
和artist_tracks
我做了什麼寫在this的文章裏。MySQL多對多關係問題
這是表artist
:artist_id,這位演出 tracks
:track_id,TRACK_NAME artist_tracks
:artist_id
,track_id
如何防止在artist_tracks
表中重複的行?
我在mysql中有3個表格artists
tracks
和artist_tracks
我做了什麼寫在this的文章裏。MySQL多對多關係問題
這是表artist
:artist_id,這位演出 tracks
:track_id,TRACK_NAME artist_tracks
:artist_id
,track_id
如何防止在artist_tracks
表中重複的行?
圍繞artist_id
和track_id
列創建複合主鍵。這是橋表的標準做法。
ALTER TABLE artist_tracks DROP PRIMARY KEY;
ALTER TABLE artist_tracks ADD PRIMARY KEY (artist_id, track_id);
如果你正確地閱讀了這篇文章,你應該已經有了這樣的密鑰,所以重複將是不可能的。
創建一個unique index。
CREATE UNIQUE INDEX artist_id_track_id ON artist_tracks (artist_id, track_id);
如果你做了什麼在鏈接中,你已經防止重複。
CREATE TABLE `x` (
`a_id` varchar(6) NOT NULL default '',
`b_id` varchar(6) NOT NULL default '',
PRIMARY KEY (`a_id`,`b_id`)
)
此代碼通過從藝術家和曲目的ID創建複合主鍵來爲您做到這一點。
你需要GROUP_CONCAT和一個「令人費解的」加入的3個表, 看到這個小提琴:http://www.sqlfiddle.com/#!2/54c6f/3/0
如果您已經構建了您的主鍵正常,你應該不能夠創建重複行。 – Jrod
將artist_id **和** track_id聲明爲artist_tracks中的主鍵。 –