PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да INSERT INTO таблица от динамична заявка?

Основната заявка за динамично изграждане на командата:

SELECT format('INSERT INTO %I (%I) SELECT %I FROM %I'
            , tbl_des, col_des, col_src, tbl_src) As sql
FROM   table3;

Това създава заявка като:

INSERT INTO "Table2" (col2) SELECT col1 FROM "Table1"

Обърнете внимание на правописа с главни букви в цитатите. За разлика от SQL командите, където идентификаторите без кавички автоматично се сгъват в малки букви, низовете във вашата таблица вече са чувствителни към малки и главни букви!

Предлагам ви никога двойни кавички и използвайте само законни имена с малки букви.

За автоматизиране:

DO
$$BEGIN
   EXECUTE (
      SELECT format('INSERT INTO %I (%I) SELECT %I FROM %I'
                  , tbl_des, col_des, col_src, tbl_src) As sql
      FROM   table3
      -- WHERE table3_id = 123  -- select only *one* row!
      );
END$$;

Вие трябвате за да разберете format() функция. Прочетете ръководството .

Можете също така да обвиете това във функция plpgsql и да подадете допълнителни параметри:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задействане на SQL Trigger само когато определен потребител актуализира реда

  2. Ограничение за изключване на колона от битов низ с побитов оператор И

  3. Как гарантирате, че стойностите от регистрираща таблица съвпадат с обекти в други таблици?

  4. Psycopg2 :Създайте таблица в съхранена процедура Postgres

  5. @Tailable(spring-data-reactive-mongodb) еквивалент в spring-data-r2dbc