Delete records from multiple tables

Consider these several tables:

tab1
-------
userid
email
address
environment

tab2

-------
ecode
company
policy

tab3
-------
id
pan no.
dl no.

Here tab1 is the parent table. I want to delete all the userid of tab1 from tab2 and tab3. Either userid will be in tab1 or tab2 or both. These tables are environment specific means environment/tab1 and environment/tab2.

How can this be done with a single query?

1
задан p.campbell 18 August 2010 в 18:18
поделиться

1 ответ

Я не эксперт по AS400, но я не знаю ни одного способа сделать это на каком-либо диалекте SQL. Вам нужно запустить транзакцию, выполнить отдельные удаления, а затем зафиксировать транзакцию, если вы хотите убедиться, что это действие является атомарным (что означает, что все это выполняется или ни одно из них не выполняется).

Код, вероятно, будет выглядеть примерно так:

BEGIN TRANSACTION

DELETE FROM tab2
WHERE userid IN (SELECT userid FROM tab1)

DELETE FROM tab3
WHERE userid IN (SELECT userid FROM tab1)

COMMIT TRANSACTION

Вы не указываете, как именно связаны эти таблицы, поэтому я предположил. Кроме того, у вас, вероятно, должна быть некоторая обработка ошибок, которая выдает ROLLBACK , если обнаружена ошибка. Я не знаю синтаксиса обработки ошибок для AS400 (DB2?), Поэтому вам нужно его найти.

2
ответ дан 2 September 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: