SQL Удалить из и получить поле назад - PullRequest
1 голос
/ 08 ноября 2019

Я хочу запустить SQL-запрос, который удаляет из таблицы при определенных условиях, но также возвращает столбец удаляемых данных, чтобы я мог поработать с ним на сервере.

Очевидно, я мог быразделить их на два запроса, таких как:

SELECT name 
FROM users
WHERE username = '...';
DELETE FROM users
WHERE username = '...';

Но мне было интересно, есть ли способ использовать параметры или, возможно, PRINT, чтобы отправить только один запрос, который будет удалять и возвращать name поле удаляемого элемента. Это возможно, или я должен придерживаться двух запросов?

1 Ответ

5 голосов
/ 08 ноября 2019

Вы можете использовать ключевое слово OUTPUT для DELETEUPDATE / INSERT), чтобы скрыть удаленные строки. Вам нужно записать во временную таблицу (или табличную переменную), чтобы что-то с ней сделать:

CREATE TABLE #Del
(
    [name] VARCHAR (25)
)

DELETE FROM Users
OUTPUT DELETED.name
INTO #Del
WHERE UserName = 'John.Doe';  

SELECT * FROM #Del -- do what you need to do here

DROP TABLE #Del
...