Хранимая процедура для ошибки вставки нескольких таблиц: невозможно вставить нулевое значение в столбец - PullRequest
0 голосов
/ 06 мая 2010

Добрый вечер всем,

Я создал следующую хранимую процедуру:

CREATE PROCEDURE AddQuote
-- Add the parameters for the stored procedure here

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @CompanyName nvarchar(50),
    @Addr nvarchar(50),
    @City nvarchar(50),
    @State nvarchar(2),
    @Zip nvarchar(5),
    @NeedDate datetime,
    @PartNumber float,
    @Qty int
-- Insert statements for procedure here
Insert into dbo.Customers
(CompanyName, Address, City, State, ZipCode)
Values (@CompanyName, @Addr, @City, @State, @Zip)

Insert into dbo.Orders 
(NeedbyDate)
Values(@NeedDate) 

Insert into dbo.OrderDetail
(fkPartNumber,Qty)
Values (@PartNumber,@Qty)


END
GO

Когда я выполняю AddQuote, я получаю сообщение об ошибке:

Msg 515, Level 16, State 2, Procedure AddQuote, Line 31
Cannot insert the value NULL into column 'ID', table 'Diel_inventory.dbo.OrderDetail'; column does not allow nulls. INSERT fails.
The statement has been terminated.

Я понимаю, что я установил поле Qty, чтобы не разрешать нули, и хочу продолжать это делать. Однако есть ли другие синтаксические изменения, которые я должен внести, чтобы убедиться, что этот sproc работает правильно?

Спасибо, Sid

Ответы [ 2 ]

1 голос
/ 06 мая 2010
  • У вас есть столбец идентификатора в таблице OrderDetail
  • Вы не задаете значение для идентификатора в INSERT

, поэтому

  • замените вставку OrderDetail, чтобы задать значение
  • , или убедитесь, что столбец имеет IDENTITY
  • , или убедитесь, что он имеет значение по умолчанию (бесполезно, если это PK, но обычно это опция)
1 голос
/ 06 мая 2010

Похоже, вы забыли включить «спецификацию идентификации» для столбца ID таблицы OrderDetail. Это не имеет ничего общего с вашей хранимой процедурой.

Вам потребуется заново создать таблицу, чтобы в столбце идентификатора было IDENTITY, но SQL Management Studio запишет это для вас.

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