Для DataAdapter Update () требуется входной параметр для столбца первичного ключа с автоинкрементом - PullRequest
0 голосов
/ 14 декабря 2009

При обновлении DataTable для базы данных SQL Server после вызова GetErrors () я получаю сообщение об ошибке «Столбец PK_Column» не допускает нулевые значения » Я не хочу предоставлять значение для PK_Column, потому что это столбец первичного ключа с автоинкрементом в базе данных. Моя инструкция вставки выглядит так:

INSERT INTO [Order] ([Customer_Id], [OrderTime], [OrderType])
VALUES(@Customer_Id, @OrderTime, @OrderType)
SELECT CAST(SCOPE_IDENTITY() AS int) AS '@PK_Column'

В SQL Server Management Studio он работает, как и ожидалось, поэтому запрос, очевидно, не является проблемой.

У меня есть четыре параметра в команде вставки, один выходной параметр (@PK_Column) и три входных параметра (@Customer_Id, @OrderTime, @OrderType). Я понял, что не получаю сообщение об ошибке, если установить @PK_Column в качестве параметра InputOutput, но тогда значение PK_Column не будет обновлено с использованием правильного значения, созданного базой данных.

1 Ответ

1 голос
/ 14 декабря 2009

Попробуйте

SELECT @PK_Column = SCOPE_IDENTITY()

Таким образом, вы назначаете локальную переменную @PK_Column, которая выбирается в качестве параметра.

Когда вы делаете ... AS '@PK_Column', вы создаете набор данных с одним столбцом с именем "@PK_Column", когда вы хотите присвоить значение локальному var / параметру @PK_Column

Примечание: ... AS @PK_Column завершится ошибкой, потому что это псевдоним столбца. Вы полагаетесь на параметр, который позволяет '@PK_Column' быть допустимым псевдонимом, где @PK_Column не будет работать

...