Сообщение 2627 Нарушение ограничения ПЕРВИЧНОГО КЛЮЧА

#mysql #sql #database #duplicates #primary-key

#mysql #sql #База данных #дубликаты #первичный ключ

Вопрос:

пытаюсь создать базу данных для команд в телешоу здесь. но когда я пытаюсь вставить данные в tblShowteam следующую ошибку, появилась ошибка.

 Msg 2627, Level 14, State 1, Line 2
Violation of PRIMARY KEY constraint 'PK__tblShowt__F693078C03317E3D'. Cannot insert duplicate key in object 'dbo.tblShowteam'.
  

таблицы

 -- tabbellen aanmaken
create table tblShow(
setId       int,
Datum       date,
teams       int
primary key (setId));

create table tblShowteam(
SetId           int,
datum           date,
teams           int,
primary key (teams));


create table tblTeam(
TeamId      int,
Coach       varchar(35),
CoachId     int,
teams       int
primary key (CoachId));


-- participant table
create table tblDeelnemer(
DeelnemerId     int identity(1, 1),
DeelnemerV      varchar(35),
deelnemerT_V    varchar(10),
DeelnemerA      varchar(35),
CoachId         int,
datum_optreden  date
primary key (DeelnemerId));


--table for the public viewers
create table tblKijker(
Kijkerv         varchar(35),
KijkerT_V       varchar(10),
KijkerA         varchar(35),
Stoelnummer     int identity(1,3),
ShowId          int Not null,
Email           varchar(35)
primary key (Email));
  

мои вставки будут выглядеть следующим образом:

 insert into tblShowteam values (1, '2014-06-28', 1)
insert into tblShowteam values (2, '2014-06-05', 1)
insert into tblShowteam values (3, '2014-06-12', 1)
insert into tblShowteam values (4, '2014-06-19', 1)
insert into tblShowteam values (5, '2014-06-26', 1)
  

все остальные вставки (в разных таблицах) работают как обычно.

что я здесь делаю не так?

Комментарии:

1. @Ben я выбрал случайное шоу из списка шоу. (отредактирует вопрос)

Ответ №1:

ваша проблема здесь

    primary key (teams));
  

я думаю, вы должны сделать это так

   primary key (setId));
  

вот так:

  create table tblShowteam(
 SetId           int,
 datum           date,
 teams           int,
 primary key (setId));
  

потому что вы вставляете одни и те же команды 1 , когда используете команды, primary key что означает отсутствие дубликатов.

Ответ №2:

ваши вставки:

 insert into tblShowteam values (1, '2014-06-28', 1)
insert into tblShowteam values (2, '2014-06-05', 1)
...
  

DB переведет это следующим образом:

 insert into tblShowteam (SetId, datum, teams) values (1, '2014-06-28', 1);
  

поскольку третий столбец является вашим первичным ключом, вы получили эту ошибку.