PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi Postgres untuk menyisipkan beberapa record dalam dua tabel

Anda dapat menggunakan array tupel untuk melewatkan beberapa baris ke fungsi. Anda memerlukan jenis khusus:

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

Gunakan array jenis ini untuk argumen fungsi:

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 $$;

Penggunaan:

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. Cara Mengelompokkan berdasarkan Bulan di PostgreSQL

  2. Kembalikan daftar yang dikelompokkan dengan kemunculan menggunakan Rails dan PostgreSQL

  3. Cara menggunakan kembali kolom hasil dalam ekspresi untuk kolom hasil lain

  4. bagaimana cara menyimpan PostgreSQL jsonb menggunakan SpringBoot + JPA?

  5. Paket PGLogical 1.1 untuk PostgreSQL 9.6beta1