Как я могу использовать 2 таблицы в хранимой процедуре при удалении? - PullRequest
3 голосов
/ 19 декабря 2010

Я хотел бы использовать две таблицы в моей удаленной хранимой процедуре.Обычно я могу написать запрос следующим образом:

delete * from table_1 x, table_2 y
где x.ID = y.ID

Но я не знаюне делайте это с помощью хранимой процедуры (как вы знаете =)

, пожалуйста, помогите ..

Ответы [ 4 ]

0 голосов
/ 19 декабря 2010

Удалить только для таблицы.

MSDN описание для удаления

DELETE (Transact-SQL)

Удаляет строки из таблицы или представления.

если вы хотите всегда удалять из таблицы2 при удалении из таблицы1, вы можете использовать триггер для таблицы 1.

см. Ссылку: http://forums.devshed.com/showpost.php?p=322160&postcount=5

0 голосов
/ 19 декабря 2010

Спасибо за все ответы, я мог бы сделать это, используя комментарии "renegm" и "Sebastian Piu".Да, я хотел бы удалить все строки из обеих таблиц, поэтому я сделал это так:

USE DB

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE delUser
(
@ID int
)
AS
УДАЛЕНИЕ ИЗ Table_1
ИЗ Table_1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Table_2 AS Y
ON Table_1.ID = Y.ID
И Y.ID = @ ID
УДАЛИТЬ ИЗ Table_2
ГДЕ Table_2.ID = @ID

Это работает, но действительно ли это решениея точно не знаю =))

0 голосов
/ 19 декабря 2010
select distinct ID
into #temp
from table_1
join table_2
on table_1.ID = table_2.ID

delete table_1
where ID in (select * from #temp)

delete table_2
where ID in (select * from #temp)

drop table #temp

простейший + без путаницы

0 голосов
/ 19 декабря 2010
DELETE FROM table_1
    FROM table_1 
        INNER JOIN table_2 AS Y
            ON table_1.id = Y.id
...