这是我的表
Create table artist_song (
Artist_id int not null,
Song_id int not null,
Artist_song_type varchar(255) not null,
Artist_song_order int not null,
Constraint artist_song_pk primary key (artist_id, song_id),
Constraint artist_song_fk1 foreign key(artist_id) references artist(artist_id),
Constraint artist_song_fk2 foreign key(song_id) references song(song_id)
);
我想插入日期
INSERT INTO artist_song (artist_id, song_id, artist_song_type, artist_song_order) VALUES (2,13,'music',1);
但它说
14:19:27 INSERT INTO artist_song (artist_id, song_id, artist_song_type, artist_song_order) VALUES (2,13,'music',1) Error Code: 1062.
Duplicate entry '2-13' for key 'PRIMARY' 0.000 sec
我该怎么办? 我需要更改artist_id吗?
答案 0 :(得分:1)
所以在这里你创建了复合键或复合主键,指的是使用多个列来指定表的主键的情况。
所以看来你的数据库表中已存在一条带有'2-13'条目的记录。请检查你的表。
所以在你的表中必须有值为2的'artist_id'和值为13的'song_id'。
因此,无论何时定义主键,它在整个列中都是唯一的,因为在这里您创建了唯一的复合键,所以两个组合必须在整个表中都是唯一的。