PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PL / pgSQL Array of Rows

Với PostgreSQL ngày nay, bạn có thể đơn giản hóa một chức năng như vậy.
Thiết lập thử nghiệm:

CREATE TABLE tbl1 (id int, value text);

Không cần tạo kiểu rõ ràng trong trường hợp này (nếu kiểu dựa trên một hàng của bảng), nó được tạo ngầm định cho mọi bảng.
Chức năng:

CREATE FUNCTION f_insert_rows_into_tbl1(tbl1[])
  RETURNS VOID AS
$BODY$
    INSERT INTO tbl1 (id,value)
    SELECT (a).*
    FROM   (SELECT unnest($1) AS a) x;
$BODY$ LANGUAGE sql;

Gọi:

SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');

Lưu ý cú pháp đầu vào cho một mảng hàng!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL Upsert với mệnh đề WHERE

  2. Chú thích ngủ đông cho kiểu nối tiếp PostgreSQL

  3. Nhận kích thước của tất cả cơ sở dữ liệu trong PostgreSQL (psql)

  4. Tôi có thể lưu trữ mảng trong hstore với Rails không

  5. docker-soạn postgres khởi động lại sau khi chạy các tập lệnh trong docker-entrypoint-initdb.d