MySQLCрасширения
языка SQL
269
Многотабличные обновления и удаления
В определенных ситуациях для выполнения поставленной задачи мо
жет понадобиться изменить или удалить
данные из нескольких раз
ных таблиц. Например, если обнаруживается,
что в БД банка есть фик
тивный клиент, выявленный в процессе аудита системы, вероятно, по
надобится
удалить данные из таблиц
account
,
customer
и
individual
.
Для этого раздела я создам набор клонов таблиц
account
,
cus
tomer
и
individual
, назвав их
account2
,
customer2
и
individual2
. Это
позволит как защитить используемые в
примере данные от из
менений, так и избежать проблем с ограничениями внешнего
ключа между таблицами (более подробно об этом в данном разде
ле позже).
Вот выражения
create
table
для формирования трех
таблицклонов:
CREATE TABLE individual2 AS
SELECT * FROM individual;
CREATE TABLE customer2 AS
SELECT *
FROM customer;
CREATE TABLE account2 AS
SELECT * FROM account;
Если бы ID фиктивного клиента был равен 1, можно было бы сгенери
ровать
три разных выражения
delete
для каждой из трех таблиц:
DELETE FROM account2
WHERE cust_id = 1;
DELETE FROM customer2
WHERE cust_id = 1;
DELETE FROM individual2
WHERE cust_id = 1;
Но в MySQL можно не писать отдельные выражения
delete
, а создать
одно
многотабличное
выражение
delete
,
которое в данном случае вы
глядит так:
mysql>
Достарыңызбен бөлісу: