Как выполнить удаление совпадающих строк с идентификатором, скопированным из другого файла с помощью dblink Postgresql? - PullRequest
0 голосов
/ 28 марта 2020

Я использую dblink для копирования данных из одной базы данных в другую, используя следующий код:

    INSERT INTO testtable select * from 
    dblink('host=localhost
            user=postgres
            password=root
            dbname=postgres', 'select * from testtable') as testtable(
            id bigint,
            name character varying
    );

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

1 Ответ

0 голосов
/ 28 марта 2020

Использование dblink здесь ничего не меняет. Если вы хотите сделать это в одном операторе, вы можете объединить RETURNING, CTE и DELETE ... USING, так же, как если бы вы выбирали из локальной таблицы.

WITH T as (
    INSERT INTO testtable select * from 
    dblink('host=localhost
            user=postgres
            password=root
            dbname=postgres', 'select * from testtable') as testtable(
            id bigint,
            name character varying
    ) 
    RETURNING *
)
DELETE from foo USING t where foo.id=t.id

Есть и другие способы мог бы сформулировать это также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...