2009-12-14 1 views
0

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

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

Попробуйте

SELECT @PK_Column = SCOPE_IDENTITY() 

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

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

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

+0

Спасибо, это решило мою проблему. – phatoni

 Смежные вопросы

  • Нет связанных вопросов^_^