Как я могу ВСТАВИТЬ в эту таблицу?

#sql #ssms #database-administration

#sql #ssms #администрирование базы данных

Вопрос:

Я установил триггер, который мне нужно протестировать. Для этого мне нужно выполнить вставку в таблицу tblSOLine, однако, когда я делаю это, я получаю сообщение об ошибке, которое, как я предполагаю, связано с настройкой PK / FKS. Есть ли какой-либо способ, которым я мог бы выполнить вставку в эту таблицу, не нарушая связи между таблицами?

Вот что я попробовал:

 INSERT INTO tblSOLine (SOHeaderID, ProductID, Quantity, NetSale, VAT)
VALUES (5364, 6, 6, NULL, NULL)
 

Вот ошибка:

 The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tblSOLine_tblSOHeader". 
The conflict occured in database "VintageSounds", table "dbo.tblSOHeader", column 'SOHeaderID'.
 

Диаграмма отношений

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

1. В таблице tblSOHeader должна существовать строка с идентификатором SOHeaderID 5364. В таблице tblProduct должна существовать строка с идентификатором продукта 6. Если ни одна из этих строк не существует, их необходимо ВСТАВИТЬ, прежде чем вы сможете вставить свою строку tblSOLine.

2. Поэтому, если я попытаюсь вставить существующее значение, оно выдает ошибку дублирования. То, что я прошу, невозможно?

3. @joehelsing: как сказал Гилберт, эти записи должны сначала существовать во внешней таблице, если это ограничение. Если 5364 нет в SOHeader в качестве SOHeaderID, уже вставьте его туда. Если 6 еще не включен в качестве идентификатора продукта в tblProduct, вставьте его туда. Как только обе эти записи существуют во внешней таблице, ваша исходная вставка должна работать.

Ответ №1:

Ошибка говорит о том, что SOHeaderID = 5364 не существует в SOHeader . Вы должны быть уверены, что это значение соответствует вашему намерению.

Вы не должны получать сообщение об ошибке при попытке вставить этот идентификатор заголовка с этим номером, если внешний ключ не работает. Однако такие идентификаторы обычно IDENTITY являются столбцами, поэтому они генерируются автоматически. Если у вас нет опечатки в номере, то, возможно, вы путаете номер с чем-то другим, например, с номером клиента.