数据来源【Customer】表

1、OUTPUT返回新增数据应用
DECLARE @temp TABLE (id INT, Name VARCHAR(50))
INSERT INTO Customer
OUTPUT inserted.Id, inserted.Name
INTO @temp
VALUES ('马超', '42', 1, GETDATE(), '汉中'),
('马岱', '50', 1, GETDATE(), '汉中')
SELECT * FROM Customer
SELECT * FROM @temp返回结果如下:

返回结果中我们可以看到新增的两条记录可以通过OUTPUT的方式返回,关键字inserted,INTO,inserted是用于检索新插入表的数据,INTO将数据插入临时表
2、OUTPUT返回删除的数据应用
接着上面新增的逻辑执行下面的SQL
DECLARE @temp TABLE (id INT, Name VARCHAR(50))
DELETE Customer OUTPUT deleted.Id, deleted.Name INTO @temp where Name = '孙尚香'
SELECT * FROM Customer
SELECT * FROM @temp返回结果如下:

返回结果中我们可以看到【Customer】表删除了‘孙尚香’的记录,并将这条记录相关的信息记录到临时表中返回了,这里的关键字deleted,和inserted一样检索到被删除的记录
3、OUTPUT返回更新数据的应用
继续接着上面的结果执行下面的SQL
DECLARE @temp TABLE (id INT, Name VARCHAR(50))
UPDATE Customer SET Name = '刘玄德' OUTPUT inserted.Id, inserted.Name INTO @temp where Id = 1
SELECT * FROM Customer
SELECT * FROM @temp返回结果如下:

返回结果中我们可以看到刘备名字更新成刘玄德了,并通过OUTPUT返回了更新的记录,这里也是使用了和插入相同的关键字inserted
特别说明:
更新和删除也是可以同时操作多条记录的录入下面的SQL
UPDATE Customer SET Intention = '蜀汉' OUTPUT inserted.Id, inserted.Intention WHERE Id IN (2,3)
SELECT * FROM Customer上面的SQL同时也没有定义临时表来承接变更的记录,但是同样会返回变更的记录结果如下:

删除同理
DELETE Customer OUTPUT deleted.Id, deleted.Intention WHERE Id IN (2,3)
SELECT * FROM Customer删除了Id记录为2和3的记录
