Как правило, вы не хотите вставлять целое число в столбец первичного ключа. Обычно вы устанавливаете флаг «Идентичность» столбца в значение «истина» только в том случае, если вы хотите, чтобы SQL Server устанавливал целое число с автоинкрементом в этот столбец при вставке.
Как и в случае с ответом Марка Гравелла, вы можете включить идентификационную вставку, используя
SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }
Но делать это в обычном коде приложения действительно вредно для здоровья - у вас возникнут проблемы с параллелизмом и, скорее всего, дублирующиеся идентификаторы. Лучше не вводить идентификатор ордера - пусть БД сделает это за вас автоматически, а затем просто запросит новый идентификатор, используя @@IDENTITY
(или лучше, SCOPE_IDENTITY()
).
Если по какой-то причине вам определенно необходимо сохранить идентификатор сеанса пользователя, сделайте это отдельным столбцом в таблице заказов или, что еще лучше, в отдельной таблице пользователей, где UserId является внешним ключом.