为什么以下不起作用?
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 ...
我可以在OUTPUT子句中使用除Inserted或Deleted之外的任何内容吗?
答案 0 :(得分:3)
我可以不在OUTPUT中使用除已插入或已删除之外的任何内容 条款?
不,你不能。至少没有insert。在SQL Server 2008中,您可以将insert转换为merge语句,然后可以在输出子句中使用源表中的值。
在SQL Server 2008中查看此问题如何执行此操作。Using merge..output to get mapping between source.id and target.id
答案 1 :(得分:0)
inserted
和deleted
表仅在DML触发器中可用。我不确定你是否只是从触发器中提取了一个代码片段,但如果这是一个独立的批处理,那么它将无法工作。
此外,没有更新的表格。更新是删除,然后是插入。 deleted
包含旧数据,inserted
包含更新的新数据。