Karthik J, Coimbatore Ответов: 5

Один SQL-запрос для удаления записей в двух таблицах


Мне нужен один SQL-запрос для удаления записей в двух таблицах без использования опции триггера и без двух команд удаления.

Стол выглядит так:

Таблица 1: Категория
cat_id
cat_name

Таблица 2: подкатегория
subcat_id
cat_id
cat_name

Заранее спасибо........

Archana K

Укажите внешний ключ для таблиц сведений, которые ссылаются на первичный ключ master, и установите Delete rule = Cascade .

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

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

5 Ответов

Рейтинг:
30

Sunil Kumar Pandab

Вы можете перейти на on delete cascade :-

SQL> create table test16 (id number primary key,name varchar2(10));

Таблица создана.


SQL> create table test17 (id number,address varchar2(10), foreign key (id) references test16(id) on
удалить каскад);

Таблица создана.


------------------------------------------------------------------------
это строки таблиц

SQL> select * from test16;

ИДЕНТИФИКАЦИОННОЕ ИМЯ
--------- ----------
100 подключат интернет
200 ОЗУ
300 сам

SQL> select * from test17;

ИДЕНТИФИКАЦИОННЫЙ АДРЕС
--------- ----------
100 добавьте 1
200 add2
300 add3

-----------------------------------------------------------------------

удаление строки в одной таблице , чтобы она удалила внешние ключи дочерней таблицы.

SQL> удалить из test16, где id=300;

1 строка удалена.

---------------------------------------------------------------------
И проверка того, удалены ли строки или нет

SQL> select * from test16;

ИДЕНТИФИКАЦИОННОЕ ИМЯ
--------- ----------
100 подключат интернет
200 ОЗУ

SQL> select * from test17;

ИДЕНТИФИКАЦИОННЫЙ АДРЕС
--------- ----------
100 добавьте 1
200 add2


Рейтинг:
12

Niju1

Привет

Вы можете иметь отношение ключа foriegn для подкатегории с опцией delete cascade
если у вас есть ключ foriegn вы можете изменить его или добавить

ALTER TABLE subcategory
ADD CONSTRAINT fk_category
FOREIGN KEY (cat_id)
REFERENCES  Category(cat_id)
ON DELETE CASCADE;


Рейтинг:
1

Prasad_Kulkarni

Попробовать это:

DELETE c.*, sb.*
FROM Category c
LEFT JOIN subCategory sb ON c.cat_id = sb.cat_id
WHERE c.cat_id = 1


Также есть посмотреть на подобный ответ: Как удалить несколько строк из разных таблиц в одном запросе[^]


[no name]

Но это невозможно в sql 2008!!!

Prasad_Kulkarni

Почему же так?

Maciej Los

Хороший ответ, мой 5-й!

Prasad_Kulkarni

Спасибо Iosmac! Рад тебя видеть.

vikasvanvi

не работает в sql 2008

Karmesh_Madhavi

если есть 3 таблицы.?, то как я могу удалить каждую запись отношения.?

NIRMAL AJAY

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

Рейтинг:
0
Рейтинг:
0

Member 10814381

привет удалить две таблицы из кода asp .net

создать состояние таблицы
Сид,
sname

создать таблицу city