Оператор INSERT конфликтует с ограничением FOREIGN KEY - PullRequest
0 голосов
/ 15 июня 2011
myCommand = New SqlCommand(
"INSERT INTO tblBook(BookCode, BookTitle, Author, PublishingYear, 
                     Price, EnterDate, CatID, RackID, Amount) 
VALUES('" & txtBookCode.Text & "','" & 
            txtTitle.Text & "','" & 
            txtAuthor.Text & "','" & 
            txtPublishYear.Text & "','" & 
            txtPrice.Text & "', #" & 
            txtEnterDate.Text & "#, " & 
            txtCategory.ValueMember & "," & 
            txtRack.ValueMember & "," & 
            txtAmount.Text & ")"
, myConnection)

Ошибка:

Оператор INSERT конфликтовал с ограничением FOREING KEY "FK_tblBook_tblCategory".Конфликт произошел в базе данных "CIEDC", таблице "dbo.tblCategory", столбце "CatID".Утверждение было прекращено.

Это из-за отношений с моей базой данных?

Как это можно решить?

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

Похоже, что значение txtCategory.ValueMember не соответствует действительному идентификатору категории в вашей базе данных.

0 голосов
/ 06 ноября 2017

Я думаю, что есть два случая:

1.

В вашей таблице dbo.tblBook, имеет столбец с именем CatID actкак ссылка внешнего ключа на таблицу dbo.tblCategory.Кажется, вы пытаетесь использовать свойство CatID , которое еще не было создано. Если это так, вернитесь назад и сначала создайте CatID .

2.

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

    USE <database_name>;  
GO  
SELECT   
    f.name AS foreign_key_name  
   ,OBJECT_NAME(f.parent_object_id) AS table_name  
   ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name  
   ,OBJECT_NAME (f.referenced_object_id) AS referenced_object  
   ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name  
   ,is_disabled  
   ,delete_referential_action_desc  
   ,update_referential_action_desc  
FROM sys.foreign_keys AS f  
INNER JOIN sys.foreign_key_columns AS fc   
   ON f.object_id = fc.constraint_object_id   
--WHERE f.parent_object_id = OBJECT_ID('HumanResources.Employee'); 
GO 
SELECT 
f.name AS foreign_key_name 
,OBJECT_NAME(f.parent_object_id) AS table_name 
,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name 
,OBJECT_NAME (f.referenced_object_id) AS referenced_object 
,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name 
,is_disabled 
,delete_referential_action_desc 
,update_referential_action_desc 
FROM sys.foreign_keys AS f 
INNER JOIN sys.foreign_key_columns AS fc 
ON f.object_id = fc.constraint_object_id 
--WHERE f.parent_object_id = OBJECT_ID('HumanResources.Employee');
0 голосов
/ 15 июня 2011

Кроме того, если вы не знаете о внедрении SQL, пожалуйста, прочтите его.

SQL-инъекция - пожалуйста, объясните

Объединение переменных для построения SQL-запросов - это хороший способ удалить вашу базу данных из-под себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...