USE tempdbGODROP TABLE ABCCREATE TABLE ABC (Id INT, Name VARCHAR(10))INSERT INTO ABC VALUES (1, 'PK'), (2, 'SK')DROP TABLE ABC1CREATE TABLE ABC1 (Id INT, Name VARCHAR(10))INSERT INTO ABC1 VALUES (1, 'KKKKK'), (2, 'MMMMM')SELECT * FROM ABCSELECT * FROM ABC1INSERT ABC1 (Id, Name)SELECT *FROM ( UPDATE A SET A.Name = 'PPPPP' OUTPUT deleted.Id, inserted.Name FROM ABC A JOIN ABC1 B ON A.Id = B.Id WHERE A.Id = 1) d SELECT * FROM ABCSELECT * FROM ABC1
USE tempdbGODROP TABLE ABCCREATE TABLE ABC (Id INT, Name VARCHAR(10), [Level] VARCHAR(20))INSERT INTO ABC VALUES (1, 'PK','Already in table'), (2, 'SK','Already in table')DROP TABLE ABC1CREATE TABLE ABC1 (Id INT, Name VARCHAR(10), [Level] VARCHAR(20))INSERT INTO ABC1 VALUES (1, 'KKKKK','Already in table'), (2, 'MMMMM','Already in table')SELECT * FROM ABCSELECT * FROM ABC1----------------------------------------------- INSERT ABC1 (Id, Name, [Level]) SELECT ID, Name, 'First insert' FROM ( UPDATE A SET A.Name = 'PPPPP', a.[Level] = 'Innermost update' OUTPUT deleted.Id, inserted.Name, 'Output Insert' INTO ABC1 OUTPUT deleted.Id, inserted.Name FROM ABC A JOIN ABC1 B ON A.Id = B.Id WHERE A.Id = 1 ) d1 SELECT * FROM ABCSELECT * FROM ABC1
Msg 10720, Level 15, State 1, Line 17An OUTPUT INTO clause is not allowed in a nested INSERT, UPDATE, DELETE, or MERGE statement.
CREATE TABLE ABC (Id INT NOT NULL , Name VARCHAR(10), Tab CHAR(1) NOT NULL DEFAULT('A') CHECK (Tab='A'), PRIMARY KEY(Id,Tab))INSERT INTO ABC(Id,Name) VALUES (1, 'PK'), (2, 'SK')CREATE TABLE ABC1 (Id INT NOT NULL, Name VARCHAR(10), Tab CHAR(1) NOT NULL DEFAULT('B') CHECK (Tab='B'), PRIMARY KEY(Id,Tab) )INSERT INTO ABC1(Id,Name) VALUES (1, 'KKKKK'), (2, 'MMMMM')GOCREATE VIEW myView AS SELECT Tab,Id,NameFROM ABCUNION ALLSELECT Tab,Id,NameFROM ABC1GOSELECT Id,Name FROM ABCSELECT Id,Name FROM ABC1UPDATE myViewSET Name = 'PPPPP'WHERE Id=1 SELECT Id,Name FROM ABCSELECT Id,Name FROM ABC1