kav@94 Ответов: 2

Как удалить данные из нескольких таблиц с помощью одного SQL-запроса в SQL server


У меня есть пять таблиц, и если я удаляю запись в gridview, мне нужно удалить все записи, связанные с этим с помощью sql, как я могу это сделать.В этих пяти таблицах tbl4 является основной таблицей и этот идентификатор в tbl4 передается всем оставшимся четырем таблицам и если я удалю запись в gridview все данные связанные с id 123 должны быть удалены в оставшихся четырех таблицах как я могу это сделать

select  * from Tbl1 where PName='123'
select  * from Tbl2 where PName='123'
select  * from Tbl3 where PName='123'
select  * from Tbl4 where ID='123'
select  * from Tbl5 where PName='123'


Что я уже пробовал:

я не мог понять, как этого добиться

2 Ответов

Рейтинг:
1

CHill60

Поскольку оператор delete может удалять только из одной таблицы за один раз в SQL, вы должны использовать хранимую процедуру для удаления из нескольких таблиц "сразу".

Однако это выглядит так, как будто Pname в виде таблиц tbl1, tbl2, tbl3 и tbl5 несколько внешних ключей для изъятия на tbl4 Если это так, то вы хотите сделать "каскадное удаление" - вот одна статья на эту тему в CodeProject Каскад в SQL Server с примером[^]
..и еще один из другого источника . Использование опции DELETE CASCADE для внешних ключей[^]


Рейтинг:
1

khanabrar

Привет,
Создайте процедуру хранилища базы данных и вызовите приведенный ниже запрос, а при удалении из gridview передайте идентификатор для хранения procdeure
Нравится:
Создать процедуру p_Delete_records
(id int)
как
начать
ОБЪЯВИТЬ @ID INT =123;
Удалить из Tbl1, где PName=@ID;
Удалить из Tbl2, где PName=@ID;
Удалить из Tbl3, где PName=@ID;
Удалить из Tbl5, где PName=@ID;
Удалить из Tbl4, где ID=@ID;
конец


kav@94

Привет спасибо за Ваш быстрый ответ я хочу сделать эту операцию удаления с помощью запроса а не через хранимую процедуру