PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

déplacer des données d'une table à une autre, édition postgresql

[Développer la réponse de dvv]

Vous pouvez passer à une table existante comme suit. Pour un schéma sans correspondance, vous devez spécifier des colonnes.

WITH moved_rows AS (
    DELETE FROM <original_table> a
    USING <other_table> b
    WHERE <condition>
    RETURNING a.* -- or specify columns
)
INSERT INTO <existing_table> --specify columns if necessary
SELECT [DISTINCT] * FROM moved_rows;

Mais vous souhaitez déplacer les données dans un nouveau table (qui n'existe pas), la syntaxe externe est différente :

CREATE TABLE <new_table> AS
WITH moved_rows AS (
    DELETE FROM <original_table> a
    USING <other_table> b
    WHERE <condition>
    RETURNING a.* -- or specify columns
)
SELECT [DISTINCT] * FROM moved_rows;