Использование OUTPUT с объединенными таблицами - PullRequest
3 голосов
/ 27 сентября 2011

Почему не работает следующее?

INSERT INTO dbo.Pending_Break 
  (Pending_Pod_ID, Break_Date_Time, Break_Length, Booked_Length)            
OUTPUT INSERTED.Pending_BH_ID -- This is the inserted identity
     , INSERTED.Pending_Pod_ID
     , INSERTED.Break_Name
     , INSERTED.Break_Date_Time
     , pb.PENDING_BH_ID  -- complains on this one
  INTO #InsertedPendingBreaks
 SELECT ippod.Pending_Pod_ID,  
        pb.Break_Date_Time
        pb.break_length,  
        0
   FROM PendingBreak pb
   JOIN InsertedPod ippod ON ...

Могу ли я использовать что-либо кроме Inserted или Deleted в предложении OUTPUT?

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Могу ли я использовать что-либо кроме Inserted или Deleted в OUTPUT пункт

Нет, ты не можешь. По крайней мере, с вставкой . В SQL Server 2008 вы можете вместо этого преобразовать insert в оператор merge , и там можно использовать значения из исходной таблицы в предложении output.

Посмотрите на этот вопрос, как это сделать в SQL Server 2008. Использование merge..output для отображения между source.id и target.id

0 голосов
/ 27 сентября 2011

Таблицы inserted и deleted доступны только в триггерах DML.Я не уверен, что вы извлекли фрагмент кода из триггера, но если это автономный пакет, он не будет работать.

Кроме того, обновленной таблицы нет.Обновление - это удаление, а затем вставка для этого.deleted содержит старые данные, а inserted содержит новые данные ОБНОВЛЕНИЯ.

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