Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
Ритка-Маргаритка
Member

Откуда:
Сообщений: 10
Я вначале пыталась читать темы с похожей проблемой, но ничего не поняла, т.к. в sql новичок, поэтому создала свою тему. Пожалуйста, объясните на моем примере, что я делаю не так?...

Вот часть кода:

CREATE TABLE DOCTORS
(
DOCTOR_ID integer NOT NULL,
SURNAME_D nchar(100),
NAME_D Nchar(100),
MIDDLE_D Nchar(100),
BIRTHDAY_D DATETIME,
TELEFON_D NUMERIC(10),
SPECIALIZATION_ID INTEGER
);

CREATE UNIQUE INDEX IXDOCTORS ON DOCTORS
(
DOCTOR_ID ASC
);


CREATE TABLE SPECIALIZATION
(
SPECIALIZATION_ID INTEGER NOT NULL,
NAME_S Nchar(100)
);

CREATE UNIQUE INDEX IXSPECIALIZATION ON SPECIALIZATION
(
SPECIALIZATION_ID ASC
);

ALTER TABLE DOCTORS
ADD PRIMARY KEY (DOCTOR_ID);

ALTER TABLE SPECIALIZATION
ADD PRIMARY KEY (SPECIALIZATION_ID);

ALTER TABLE DOCTORS
ADD FOREIGN KEY (SPECIALIZATION_ID) REFERENCES SPECIALIZATION;


INSERT INTO DOCTORS VALUES (1, 'ИВАНОВ', 'ГЕННАДИЙ', 'АРКАДЬЕВИЧ', '1/12/1976', 4951583405, 6);
INSERT INTO DOCTORS VALUES (2, 'СТЕПАНОВ', 'ВАСИЛИЙ', 'ИЛЬИЧ', '14/03/1956', 4952663454, 1);
INSERT INTO DOCTORS VALUES (3, 'ВАСИЛЬЕВА', 'ВЕРА', 'СЕРГЕЕВНА', '11/06/1980', 4991801734, 1);
INSERT INTO DOCTORS VALUES (4, 'ЛЕБЕДЕВА', 'ТАТЬЯНА', 'ПАВЛОВНА', '02/12/1948', 4956778834, 5);
INSERT INTO DOCTORS VALUES (5, 'КУТИЛКИНА', 'АННА', 'АЛЕКСЕЕВНА', '06/04/1977', 4998806754, 12);
INSERT INTO DOCTORS VALUES (6, 'РАСИМОВ', 'ГЕОРГИЙ', 'АРТУРОВИЧ', '08/09/1985', 4996897722, 12);
INSERT INTO DOCTORS VALUES (7, 'АРТЕМЬЕВА', 'ВИТАЛИНА', 'СЕМЕНОВНА', '07/07/1977', 4957725690, 11);
INSERT INTO DOCTORS VALUES (8, 'СЕРГЕЕВА', 'ОЛЬГА', 'НИКОЛАЕВНА', '14/07/1956', 4998805032, 6);

INSERT INTO SPECIALIZATION VALUES (1, 'ТЕРАПЕВТ');
INSERT INTO SPECIALIZATION VALUES (5, 'НЕВРОЛОГ');
INSERT INTO SPECIALIZATION VALUES (12, 'ОТТОЛАРИНГОЛОГ');
INSERT INTO SPECIALIZATION VALUES (11, 'ГИНЕКОЛОГ');
INSERT INTO SPECIALIZATION VALUES (6, 'КАРДИОЛОГ');

Сама проблема: когда выполняю create table, всё успешно выполняется. Когда пытаюсь выполнить insert, выдает след. ошибку:

Сообщение 547, уровень 16, состояние 0, строка 1
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 2
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 3
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 4
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 5
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 6
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 7
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.
Сообщение 547, уровень 16, состояние 0, строка 8
Конфликт инструкции INSERT с ограничением FOREIGN KEY "FK__DOCTORS__SPECIAL__182C9B23". Конфликт произошел в базе данных "KURSOVAYA", таблица "dbo.SPECIALIZATION", column 'SPECIALIZATION_ID'.
Выполнение данной инструкции было прервано.

Объясните, пожалуйста, в чем дело?...
19 мар 13, 23:10    [14069926]     Ответить | Цитировать Сообщить модератору
 Re: Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
invm
Member

Откуда: Москва
Сообщений: 9842
Дело в
ALTER TABLE DOCTORS
ADD FOREIGN KEY (SPECIALIZATION_ID) REFERENCES SPECIALIZATION;

Сначала добавляйте данные в SPECIALIZATION, а потом в DOCTORS.
Либо FOREIGN KEY создавайте после вставки всех данных.
19 мар 13, 23:29    [14069955]     Ответить | Цитировать Сообщить модератору
 Re: Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
Ритка-Маргаритка
Member

Откуда:
Сообщений: 10
Когда пытаюсь выполнить запрос просто с добавлением данных в табличку SPECIALIZATION, выдает следующее:

Сообщение 2627, уровень 14, состояние 1, строка 1
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Выполнение данной инструкции было прервано.
Сообщение 2627, уровень 14, состояние 1, строка 2
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Выполнение данной инструкции было прервано.
Сообщение 2627, уровень 14, состояние 1, строка 3
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Выполнение данной инструкции было прервано.
Сообщение 2627, уровень 14, состояние 1, строка 4
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Выполнение данной инструкции было прервано.
Сообщение 2627, уровень 14, состояние 1, строка 5
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Выполнение данной инструкции было прервано.
19 мар 13, 23:32    [14069962]     Ответить | Цитировать Сообщить модератору
 Re: Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
Ритка-Маргаритка
Member

Откуда:
Сообщений: 10
invm

Либо FOREIGN KEY создавайте после вставки всех данных.


Вот это помогло! Спасибо огромное!
19 мар 13, 23:34    [14069970]     Ответить | Цитировать Сообщить модератору
 Re: Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
invm
Member

Откуда: Москва
Сообщений: 9842
Ритка-Маргаритка
Сообщение 2627, уровень 14, состояние 1, строка 1
Нарушение "PK__SPECIALI__57E4BDEB0AD2A005" ограничения PRIMARY KEY. Невозможно вставить повторяющийся ключ в объект "dbo.SPECIALIZATION".
Ну так зачем еще раз добавлять данные, которые уже есть в таблице?
19 мар 13, 23:37    [14069979]     Ответить | Цитировать Сообщить модератору
 Re: Конфликт инструкции INSERT с ограничением FOREIGN KEY  [new]
Ритка-Маргаритка
Member

Откуда:
Сообщений: 10
Туплю))) Еще раз спасибо ^_^
19 мар 13, 23:38    [14069986]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить