ASP.NET SQL Server вставить ошибку - PullRequest
1 голос
/ 30 сентября 2011

Итак, у меня есть два утверждения:

         string insertUserData = "INSERT INTO W711_User_Data(Network_ID, F_Name, M_Name, L_NAME, Badge, Telephone, Org_Code, Org_Name, Req_Head_Network_ID)Values(@networkID1, @firstName1, @middleName1, @lastName1, @badgeNumber1, @telephone1, @orgCode1, @orgName1, @myUserName1)";


        string insertReservationData = "INSERT INTO W711_Reservation_Data(ID, Network_ID, EventTitle, StartDate, EndDate, Justification) Values(null, @networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)"; 

Идентификатор сети во второй строке является отношением внешнего ключа с идентификатором сети в первой таблице.

Проблема: Когда я запускаю application в VS2010, выдает ошибку: Не удается вставить явное значение для идентификатора column в таблицу 'W711_Reservation_Data', если IDENTITY_INSERT установлено на OFF.

Тогда я читаю, чтобы сделать это где-нибудь:

SET IDENTITY_INSERT W711_Reservation_Data ON

Но он также не работает и снова выдает ту же ошибку! Пожалуйста помоги Спасибо постскриптум sql server

Ответы [ 3 ]

1 голос
/ 30 сентября 2011

, если ваш идентификатор является идентификатором (он же создается автоматически из базы данных), просто не указывайте поле идентификатора ни в каком месте в выражении INSERT, а не в качестве имени столбца и не в списке значений:

чтобы получить идентификатор, сгенерированный SQL Server, вы вызываете SCOPE_IDENTITY следующим образом:

INSERT INTO W711_Reservation_Data(Network_ID, EventTitle, StartDate, EndDate, Justification) Values(@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)";

RETURN SCOPE_IDENTITY()

Редактировать: это второе из ваших двух утверждений, я удалил идентификатор и NULL ...

1 голос
/ 30 сентября 2011

Возможны две возможности.

1], если Network_ID в первой таблице является автоматически сгенерированным первичным ключом, вставьте данные в первую таблицу.затем получите последний идентификатор сети из этой таблицы и передайте этот идентификатор сети вторым запросом.

2].Если столбец идентификатора во второй таблице является первичным ключом, то во втором запросе не следует передавать значение NULL.либо автоматически сгенерировать, либо передать уникальное значение в запросе.

1 голос
/ 30 сентября 2011

Почему вы все равно пытаетесь вставить null в качестве значения для столбца ID?Если предположить, что это столбец IDENTITY, который является источником жалобы, то, скорее всего, вам нужно просто исключить его из списка столбцов и не передавать никаких явных значений. Т.е.

INSERT INTO W711_Reservation_Data
   (Network_ID, EventTitle, StartDate, EndDate, Justification) 
Values
  (@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...