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

Postgres Chức năng để chèn nhiều bản ghi trong hai bảng

Bạn có thể sử dụng một mảng các bộ giá trị để chuyển nhiều hàng cho hàm. Bạn cần một loại tùy chỉnh:

create type order_input as (
    item text,
    quantity integer);

Sử dụng mảng kiểu này cho một đối số của hàm:

create or replace function insert_into_orders(order_input[])
returns void language plpgsql as $$
declare 
    inserted_id integer;
begin
    insert into public.orders(orderdate) 
    values (now()) 
    returning orderid into inserted_id;

    insert into public.orderdetails(orderid, item, quantity)
    select inserted_id, item, quantity
    from unnest($1);
end $$;

Cách sử dụng:

select insert_into_orders(
    array[
        ('Red Widget', 10), 
        ('Blue Widget', 5)
    ]::order_input[]
);

select * from orderdetails;

 orderdetailid | orderid |    item     | quantity 
---------------+---------+-------------+----------
             1 |       1 | Red Widget  |       10
             2 |       1 | Blue Widget |        5
(2 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chế độ postgresql H2 dường như không hoạt động với tôi

  2. Cách nâng cấp PostgreSQL10 lên PostgreSQL11 với Zero Downtime

  3. định dạng sao chép nhiều cột postgresql Node.js

  4. Postgres:LỖI:giá trị quá dài đối với ký tự loại thay đổi (255) Không chỉ định trường

  5. Trạng thái hiện tại của quản lý sao lưu mã nguồn mở cho PostgreSQL