关于sql插入到日期

时间:2016-04-05 19:27:52

标签: mysql sql-server

这是我的表

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吗?

1 个答案:

答案 0 :(得分:1)

所以在这里你创建了复合键或复合主键,指的是使用多个列来指定表的主键的情况。

所以看来你的数据库表中已存在一条带有'2-13'条目的记录。请检查你的表。

所以在你的表中必须有值为2的'artist_id'和值为13的'song_id'。

因此,无论何时定义主键,它在整个列中都是唯一的,因为在这里您创建了唯一的复合键,所以两个组合必须在整个表中都是唯一的。