sql >> Databáze >  >> RDS >> PostgreSQL

zapisovatelný společný tabulkový výraz a vícenásobné vkládání příkazů

Můžete použít CTE, pokud to chcete všechno v jednom příkazu:

with foo as (
      select * from ...
     ),
     b as (
      insert into bar
          select * from foo
          returning *
     )
insert into baz
    select * from foo;

Poznámky:

  • Seznamy sloupců byste měli zahrnout pomocí insert .
  • Názvy sloupců byste měli zadat explicitně pro select * . To je důležité, protože sloupce ve dvou tabulkách se nemusí shodovat.
  • Vždy používám returning s update /insert /delete v CTE. Toto je normální případ použití -- takže například můžete získat sériová ID zpět z přílohy.


  1. Zdá se, že MySQL Query nesplňuje očekávání

  2. Alternativa ke klauzuli LIKE v Mysql

  3. Spouštěč modifikace relace?

  4. Navázání prázdného seznamu nebo hodnoty null na parametr s hodnotou tabulky v uložené proceduře (.NET)