2015-02-18 1 views
0

У меня возникают проблемы с моим триггером, так как мне нужно удалить строки из одной из моих таблиц, но необходимо, чтобы идентификатор был связан с этой таблицей только что вставленными данными ,удалять строки из таблицы, где столбцы из другой таблицы

 DELETE FROM TransactionTable where ItineraryReferenceNumber = 
     (select distinct i.ItineraryReferenceNumber from inserted i LEFT JOIN TransactionTable FS 
     ON i.ItineraryReferenceNumber = FS.ItineraryReferenceNumber) 

Мне нужно получить все записи с соответствующими номерами ссылок, поэтому я их выбираю.

Правильно ли это, или я делаю что-то неправильно?

+2

Если ваш подзапрос возвращает более одного значения, вы должны использовать 'WHERE ItineraryReferenceNumber IN (yourSubquery)'. –

ответ

1

Вы фактически удаляете записи из TransactionTable, которые находятся в таблице inserted.

DELETE FROM TransactionTable 
WHERE ItineraryReferenceNumber IN (
    SELECT ItineraryReferenceNumber FROM inserted 
) 
2
SELECT CustomerID FROM [Customers] where CUSTOMERID NOT IN (SELECT O.CUSTOMERID from Customers c, Orders O where O.CustomerID=c.CustomerID) 

Смотрите этот пример кода, из this database. Это тот же запрос, что и вы, это вернет идентификатор клиентов, которые не выполнили никаких заказов. Вы можете использовать то же самое, вы удаляете такой URL-адрес этого маршрута, где он соответствует некоторым критериям другой таблицы.

+0

@marchemike Здесь я выполнил операцию SELECT, вы можете использовать любую операцию. Дайте мне знать, если у вас есть путаница. –