Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 про OUTPUT  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4673
Господа,
согласно следующей доке (SQL 2016)
https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017
имеется возможность выводить в OUTPUT не только INSERTED и DELETED значения, но ещё и другие значения из исходных таблиц.

Но почему-то это работает только на UPDATE и DELETE. Кто знает можно ли написать это и на INSERT? Про Merge пока молчу.

IF OBJECT_ID('TEMPDB..#Y') IS NOT NULL 
	DROP TABLE #Y

CREATE TABLE #Y(Y_ID INT NOT NULL IDENTITY(1,1), Y VARCHAR(10) NOT NULL)

INSERT INTO #Y(Y)
VALUES('A'), ('B')

UPDATE Y
SET Y.Y = B
OUTPUT INSERTED.Y_ID, T.A, T.B, T.N
FROM #Y Y 
INNER JOIN 
(
	VALUES('A', 'E', 1), ('B', 'F', 2)
) T(a, b, N) ON T.a = Y.Y

INSERT INTO #Y(Y)
OUTPUT INSERTED.Y_ID--, T.A, T.B, T.N -- НЕ РАБОТАЕТ 
SELECT T.a FROM 
(
	VALUES('A', 'E', 1), ('B', 'F', 2)
) T(a, b, N) 
27 мар 19, 15:28    [21845180]     Ответить | Цитировать Сообщить модератору
 Re: про OUTPUT  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36889
Перепишите insert на merge.
UPD. Ну вы и так в курсе.

Сообщение было отредактировано: 27 мар 19, 15:37
27 мар 19, 15:36    [21845192]     Ответить | Цитировать Сообщить модератору
 Re: про OUTPUT  [new]
invm
Member

Откуда: Москва
Сообщений: 9265
a_voronin
Кто знает можно ли написать это и на INSERT?
Нельзя.
Документацию надо читать внимательнее
https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017
from_table_name
Is a column prefix that specifies a table included in the FROM clause of a DELETE, UPDATE, or MERGE statement that is used to specify the rows to update or delete.
27 мар 19, 15:55    [21845213]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить