Динамическое удаление оператора на основе соединения? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть хранимая процедура с табличным параметром GroupUserTVP:

CREATE TYPE [dbo].[GroupUserTVP] AS TABLE
(
    [GroupId] [uniqueidentifier] NULL,
    [UserId] [uniqueidentifier] NULL
)

У меня есть таблица GroupUser со следующей структурой:

CREATE TABLE [dbo].[GroupUser]
(
    [GroupId] [uniqueidentifier] NOT NULL,
    [UserId] [uniqueidentifier] NOT NULL
)

TVP будет содержать коллекцию GroupId и UserId. Если в таблице GroupUser есть пользователи группы, которых нет в TVP, то эти пользователи группы должны быть удалены.

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

1 Ответ

0 голосов
/ 16 мая 2018

DELETE tvp FROM TVP tvp FULL OUTER JOIN SimpleTable tbl ON tvp.FK = tbl.ID

Он удалит все записи, которых нет в вашей простой таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...