我在mysql artists
tracks
和artist_tracks
中有3个表
我做了this文章中写的内容。
这是表artist
:artist_id,artist_name
tracks
:track_id,track_name
artist_tracks
:artist_id
,track_id
如何防止artist_tracks
表中的重复行?
答案 0 :(得分:5)
围绕artist_id
和track_id
列创建复合主键。这是桥接表的标准做法。
ALTER TABLE artist_tracks DROP PRIMARY KEY;
ALTER TABLE artist_tracks ADD PRIMARY KEY (artist_id, track_id);
如果您正确地遵循了该文章,那么您应该已经拥有了这样一个密钥,因此无法复制。
答案 1 :(得分:0)
创建unique index。
CREATE UNIQUE INDEX artist_id_track_id ON artist_tracks (artist_id, track_id);
答案 2 :(得分:0)
如果你做了链接中的内容,那么你已经在阻止重复了。
CREATE TABLE `x` (
`a_id` varchar(6) NOT NULL default '',
`b_id` varchar(6) NOT NULL default '',
PRIMARY KEY (`a_id`,`b_id`)
)
此代码通过从艺术家和曲目的ID中创建复合主键来为您完成。
答案 3 :(得分:0)
你需要在3个表上使用group_concat和“复杂”连接, 看到这个小提琴:http://www.sqlfiddle.com/#!2/54c6f/3/0