PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज़ फ़ंक्शन दो तालिकाओं में एकाधिक रिकॉर्ड सम्मिलित करने के लिए

फ़ंक्शन में एकाधिक पंक्तियों को पास करने के लिए आप टुपल्स की एक सरणी का उपयोग कर सकते हैं। आपको एक कस्टम प्रकार की आवश्यकता है:

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

फ़ंक्शन के तर्क के लिए इस प्रकार की सरणी का प्रयोग करें:

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

उपयोग:

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. ऑफ़सेट सीमा वाली क्वेरी का चयन बहुत धीमा है

  2. सभी स्कीमा में PostgreSQL एक्सटेंशन स्थापित करना

  3. मैं इस फ़ंक्शन में अपने रिटर्न मानों के लिए स्वरूपण कैसे बदलूं?

  4. PostGIS का उपयोग करने वाले उपयोगकर्ताओं के पास तेजी से खोजें

  5. Postgresql में स्थानीय चर कैसे घोषित करें?