Удаление строк

mankilla
Дата: 30.01.2013 11:58:22
Помогите пожалуйста с решением. Есть две таблицы tbl1, tbl2. Необходимо удалить записи из обеих таблиц по условию tbl1.f1=tbl2.fl1 и tbl1.f2=tbl2.fl2
Glory
Дата: 30.01.2013 12:00:29
mankilla
Необходимо удалить записи из обеих таблиц по условию tbl1.f1=tbl2.fl1 и tbl1.f2=tbl2.fl2

Одновременно из 2х что ли удалить ?
mankilla
Дата: 30.01.2013 12:13:27
Glory,
да, интересует есть ли именно такая возможность?
Гавриленко Сергей Алексеевич
Дата: 30.01.2013 12:14:55
mankilla
Glory,
да, интересует есть ли именно такая возможность?
Сохранить пересекающиеся записи во временную таблицу и написать два delete.
Мистер Хенки
Дата: 30.01.2013 12:18:48
Гавриленко Сергей Алексеевич
mankilla
Glory,
да, интересует есть ли именно такая возможность?
Сохранить пересекающиеся записи во временную таблицу и написать два delete.

можно еще output кляузу использовать для первого delete и вставить результат во временную таблу, которую использовать во втором delete, ну и все это в транзакции
iap
Дата: 30.01.2013 12:36:30
И триггер FOR DELETE можно написать
_ч_
Дата: 30.01.2013 13:16:38
mankilla,

Как-то так наверное

create table #temp(f1 int, f2 int)

delete from tbl1
output deleted.* into #temp
from tbl1
inner join tbl2 on tbl1.f1 = tbl2.f1 and tbl1.f2 = tbl2.f2


delete from tbl2
from tbl2
inner join #temp t on t.f1 = tbl2.f1 and t.f2 = tbl2.f2
_ч_
Дата: 30.01.2013 13:19:04
или так:

MERGE tbl1
USING tbl2 on (tbl1.f1 = tbl2.f1 and tbl1.f2 = tbl2.f2)
WHEN MATCHED THEN 
	DELETE
	OUTPUT deleted.* into #temp
;

MERGE tbl2
USING #temp tbl1 on (tbl1.f1 = tbl2.f1 and tbl1.f2 = tbl2.f2)
WHEN MATCHED THEN 
	DELETE
;