Хранимая процедура, которая удаляет записи, проходя через идентификаторы - PullRequest
0 голосов
/ 13 октября 2010

Так что я действительно запутался в том, как написать этот процесс. Вот что нужно сделать.

У меня есть 3 таблицы, выложенные следующим образом:

tblObject {ObjectId, MasterId}

tblAnotherObject {ObjectId}

tblFutureObject {ObjectId}

Мне нужен процесс, который может удалить строки в «tblAnotherObject» и «tblFutureObject», которые содержат «ObjectId», который НЕ имеет соответствующего «ObjectId» в «tblObject», который связан с переданным в «MasterId» проц.

Сегодня я часами бился головой о стену, и я понятия не имею, как написать что-то подобное ... большое спасибо заранее.

1 Ответ

2 голосов
/ 13 октября 2010

Мне нужен процесс, который может удалять строки в «tblAnotherObject» и «tblFutureObject», которые содержат «ObjectId», который НЕ имеет соответствующего «ObjectId» в «tblObject», который связан с переданным в «MasterId» проц.

Использование:

DELETE FROM TBLANOTHEROBJECT
 WHERE NOT EXISTS(SELECT NULL
                    FROM TBLOBJECT o
                   WHERE o.masterid = @masterid
                     AND o.objectid = TBLANOTHEROBJECT.objectid)

DELETE FROM TBLFURTHEROBJECT
 WHERE NOT EXISTS(SELECT NULL
                    FROM TBLOBJECT o
                   WHERE o.masterid = @masterid
                     AND o.objectid = TBLFURTHEROBJECT.objectid)

Скажем, tblObject содержит строку с MasterId = 4 и ObjectId = 15. Я хочу удалить все строки в двух других таблицах с ObjectId = 15.

Это наоборот - используйте:

DELETE FROM TBLANOTHEROBJECT
 WHERE EXISTS(SELECT NULL
                FROM TBLOBJECT o
               WHERE o.masterid = @masterid
                 AND o.objectid = TBLANOTHEROBJECT.objectid)

DELETE FROM TBLFURTHEROBJECT
 WHERE EXISTS(SELECT NULL
                FROM TBLOBJECT o
               WHERE o.masterid = @masterid
                 AND o.objectid = TBLFURTHEROBJECT.objectid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...