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

Откуда:
Сообщений: 1197
Помогите разобраться.

Вот такой запрос на вставку проходит корректно:
INSERT INTO tbl_mag_sad_masterClass_lnk_Rubric(id_masterClass,id_rubric) VALUES(36,50)

А вот такой. на в ставку в ту же таблицу выводит ошибку:
INSERT INTO tbl_mag_sad_masterClass_lnk_Rubric(id_masterClass,id_rubric) VALUES(79,85)

Ошибка:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tbl_mag_sad_masterClass_lnk_Rubric_tbl_mag_sad_MasterClass_blocklinks". The conflict occurred in database "magazines", table "dbo.tbl_mag_sad_MasterClass_blocklinks", column 'id'.


Куда смотреть? Что же это такое происходит?
18 авг 08, 16:54    [6079617]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Alex_BBB
Помогите разобраться.

Вот такой запрос на вставку проходит корректно:
INSERT INTO tbl_mag_sad_masterClass_lnk_Rubric(id_masterClass,id_rubric) VALUES(36,50)

А вот такой. на в ставку в ту же таблицу выводит ошибку:
INSERT INTO tbl_mag_sad_masterClass_lnk_Rubric(id_masterClass,id_rubric) VALUES(79,85)

Ошибка:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tbl_mag_sad_masterClass_lnk_Rubric_tbl_mag_sad_MasterClass_blocklinks". The conflict occurred in database "magazines", table "dbo.tbl_mag_sad_MasterClass_blocklinks", column 'id'.


Куда смотреть? Что же это такое происходит?

Мля! Кто у вас там такой вумный, что такие названия для таблиц придумывает. Если тип sysname еще расширят, то скоро буду называть таблицы типа "Таблица подтяжек, которые проданы в магазине №5".
Про внешние ключи (они же ограничения ссылочной целостности) почитай
18 авг 08, 17:00    [6079655]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Alex_BBB
Member

Откуда:
Сообщений: 1197
>Про внешние ключи (они же ограничения ссылочной целостности) почитай
проверил - действительно ключ не нужный появился.
18 авг 08, 17:05    [6079707]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Alex_BBB
>Про внешние ключи (они же ограничения ссылочной целостности) почитай
проверил - действительно ключ не нужный появился.

Тоже споткнулась. Доверилась менеджмент студийному генератору.
Кстати гуру, а стоит ли?
17 авг 09, 12:55    [7545894]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Glory
Member

Откуда:
Сообщений: 104760
Honda 333
Alex_BBB
>Про внешние ключи (они же ограничения ссылочной целостности) почитай
проверил - действительно ключ не нужный появился.

Тоже споткнулась. Доверилась менеджмент студийному генератору.
Кстати гуру, а стоит ли?

Вы хотите сказать, что студия сама создала вам ссылочную целостность ?
17 авг 09, 12:57    [7545906]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Glory,

я знаю, что Вы тут самый умный, а я в TSQL не очень. Поэтому прошу отнестись с пониманием.
Есть ли различия между этими 2-мя скриптами?
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_SearchResults_SearchResults]') AND parent_object_id = OBJECT_ID(N'[dbo].[SearchResults]'))
ALTER TABLE [dbo].[SearchResults]  WITH NOCHECK ADD  CONSTRAINT [FK_SearchResults_SearchResults] FOREIGN KEY([ID])
REFERENCES [dbo].[Search] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE

ALTER TABLE [dbo].[SearchResults]  WITH CHECK ADD  CONSTRAINT [FK_SearchResults_Search] FOREIGN KEY([SearchID])
REFERENCES [dbo].[Search] ([ID])
GO
ALTER TABLE [dbo].[SearchResults] CHECK CONSTRAINT [FK_SearchResults_Search]
GO
17 авг 09, 13:18    [7546030]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Каскадность и названия. Но по существу - нет.
17 авг 09, 13:20    [7546037]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
а вот parent_object_id !
Вот это что за объект?
17 авг 09, 13:22    [7546044]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Glory
Member

Откуда:
Сообщений: 104760
Honda 333
а вот parent_object_id !
Вот это что за объект?

Если в хелпе открыть статью про таблицу sys.objects, то можно узнать об этом

И скрипт, сгенерированный студией отличается от вашего проверкой наличия объектов перед их созданием
17 авг 09, 13:35    [7546105]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Glory

Если в хелпе открыть статью про таблицу sys.objects, то можно узнать об этом

премного благодарна
Glory

И скрипт, сгенерированный студией отличается от вашего проверкой наличия объектов перед их созданием

в случае удачной проверки первой, отличаются ли связи между собой?
17 авг 09, 13:39    [7546124]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Glory
Member

Откуда:
Сообщений: 104760
Honda 333

Glory

И скрипт, сгенерированный студией отличается от вашего проверкой наличия объектов перед их созданием

в случае удачной проверки первой, отличаются ли связи между собой?

Отличаются для команд UPDATE и DELETE
ON UPDATE CASCADE
ON DELETE CASCADE

Для команды INSERT - не отличаются
17 авг 09, 13:43    [7546155]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Очевидно, что нет (каскадность не в счёт, я ею не пользовалась).

Так вот (за рамками этого форума) ОРМ Entity Framework (NET 3.5) ведёт себя по разному в этих 2-х случаях. Уж поверьте на слово.
17 авг 09, 13:44    [7546164]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Glory
Для команды INSERT - не отличаются

вот именно это я и хотела узнать. Спасибо.
17 авг 09, 13:45    [7546169]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Glory
Member

Откуда:
Сообщений: 104760
Honda 333
Glory
Для команды INSERT - не отличаются

вот именно это я и хотела узнать. Спасибо.

Только так и непонятно, причем тут "Доверилась менеджмент студийному генератору."
Поведение и работа ссылочных ограничений описано в хелпе.
Никакой студийный генератор не создаст скрипт со свойствами, которых нет в базе.
17 авг 09, 13:48    [7546187]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Glory,

была связь между таблицами созданная руками - работало.
сгенерировали скрипт, переустановили базу им - перестало
поправили связь руками в скрипте, переустановили - заработало снова.

Жаль нет времени выяснять детали, очевидно ОРМ криво отображает связь.
17 авг 09, 14:04    [7546309]     Ответить | Цитировать Сообщить модератору
 Re: INSERT statement conflicted with the FOREIGN KEY  [new]
Honda 333
Member

Откуда:
Сообщений: 97
Glory

Поведение и работа ссылочных ограничений описано в хелпе.
Никакой студийный генератор не создаст скрипт со свойствами, которых нет в базе.

ну конечно, кто ж спорит.
17 авг 09, 14:05    [7546322]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить