2017-02-19 26 views
-1

ошибки я столкнулся:Оператор вставки и внешний ключ

The INSERT statement conflicted with the FOREIGN KEY constraint "fk_anm_intake_code". The conflict occurred in database "J.Does", table "dbo.intake_codes", column 'intake_code'. The statement has been terminated.

Скрипт для вышеупомянутой ошибки:

insert into animals 
(anm_name,anm_species,anm_breed,anm_age,anm_gender,anm_size,anm_spayorneuter,anm_intake_date,anm_intake_code,anm_notes) 
values 
('Tom', 'Canine', 'Mix.pit/Poodle', 8.80, 'M', 'SM', 'Y', 12/23/16,'C', 'Needs additional water/Hoursebroken'), 
('Chi', 'Feline', 'House', 0.80, 'F', 'SM', 'Y', 11/11/16, 'F', 'Very affectionate'), 
('Lin', 'Canine', 'Beagle', 2.30, 'M', 'SM', 'N', 1/17/16, 'B', 'Hoursebroken/loves to play ball'), 
('Frisky', 'Feline', 'Mix.pit/Poodle', 11.50, 'F', 'Med',' N', 12/2/16, 'B', 'Best in low activity home'), 
('Shady', 'Canine', 'House', 4.50, 'F', 'Med', 'Y', 1/16/17, 'C ', 'Null'), 
('Sparky', 'Canine', 'Mix.pit/Poodle', 4.10, 'F', 'Lrg', 'N', 1/17/17, 'F', 'Not housebroken/love kids/gentle'), 
('Lucy', 'Feline', 'House', 1.10, 'F', 'XL', 'Y', 12/3/16, 'E', 'Null'), 
('Blue', 'Canine', 'Lab/Pit.Mixed', 1.20, 'F', 'SM', 'N', 2/4/17, 'B', 'Not housebroken') 

Пожалуйста, помогите !!

+1

если вставить что-то в таблицу с внешним ключом убедитесь, что значение вставляется в этом столбце также существует в родительской таблице – Mihai

+0

Да, я уже проверить то, что я положил в родительская таблица такая же, как и таблица вставки, но ее не работает –

+0

Можете ли вы обновить свой вопрос и включить две структуры таблицы. –

ответ

0

Возможно, вы пытаетесь вставить значение в animal.anm_intake_code, которого нет в таблице dbo.intake_codes.

Глядя на ваш запрос ...

INSERT INTO animals (
    anm_name,anm_species,anm_breed,anm_age,anm_gender,anm_size,anm_spayorneuter,anm_intake_date,anm_intake_code,anm_notes 
) VALUES (
    'Tom', 'Canine', 'Mix.pit/Poodle', 8.80, 'M', 'SM', 'Y', 12/23/16,'C', 'Needs additional water/Hoursebroken' 
), (
    'Chi', 'Feline', 'House', 0.80, 'F', 'SM', 'Y', 11/11/16, 'F', 'Very affectionate' 
), (
    'Lin', 'Canine', 'Beagle', 2.30, 'M', 'SM', 'N', 1/17/16, 'B', 'Hoursebroken/loves to play ball' 
), (
    'Frisky', 'Feline', 'Mix.pit/Poodle', 11.50, 'F', 'Med',' N', 12/2/16, 'B', 'Best in low activity home' 
), (
    'Shady', 'Canine', 'House', 4.50, 'F', 'Med', 'Y', 1/16/17, 'C ', 'Null' 
), (
    'Sparky', 'Canine', 'Mix.pit/Poodle', 4.10, 'F', 'Lrg', 'N', 1/17/17, 'F', 'Not housebroken/love kids/gentle' 
), (
    'Lucy', 'Feline', 'House', 1.10, 'F', 'XL', 'Y', 12/3/16, 'E', 'Null' 
), (
    'Blue', 'Canine', 'Lab/Pit.Mixed', 1.20, 'F', 'SM', 'N', 2/4/17, 'B', 'Not housebroken' 
) 

... вы пытаетесь вставить 'C', 'F', 'B' и 'E'. Какое из этих значений отсутствует в dbo.intake_codes?

+0

ALTER TABLE ADD животных ограничения fk_anm_intake_code FOREIGN KEY (anm_intake_code) Лит intake_codes (intake_code), ограничение ck_anm_intake_code ЧЕК (anm_intake_code in ('B', 'C', 'D', 'E', 'F', 'N')) Это то, что у меня есть –

+0

Можете ли вы подтвердить, что данные действительно находятся в таблице dbo.intake_codes? То есть каковы результаты SELECT * FROM dbo.intake_codes? –

+0

CHECK (anm_intake_code in ('B', 'C', 'D', 'E', 'F', 'N')) является ограничением и будет допускать только эти значения, но это не означает, что строки на самом деле в таблице. –

0

Кажется, у вас нет «N» intake_code, определенного в таблице dbo.intake_codes. Вы можете исправить это вставить недостающее значение

insert into dbo.intake_codes(intake_code) select 'N'