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

माता-पिता की प्राथमिक ऑटो-वृद्धि कुंजी के समान मूल्य रखने के लिए चाइल्ड टेबल की विदेशी कुंजी कैसे प्राप्त करें?

DEFAULT SERIAL . के लिए काम करेगा क्योंकि यह कॉलम के लिए डिफ़ॉल्ट मान सेट करता है। तो

INSERT INTO Purchase VALUES (DEFAULT,'Lendl');

कार्य करना चाहिए। लेकिन PurchasedItem.purchaseID कोई डिफ़ॉल्ट मान सेट नहीं है, इसलिए यह NULL insert डालने का प्रयास करता है (और नल अभी तक संदर्भित कॉलम में नहीं है), इसलिए यह विफल हो जाता है।

कोशिश करें:

INSERT INTO Purchase(custName) VALUES ('Lendl') RETURNING purchaseID;

आप सम्मिलित purchaseID . का मान देखेंगे , अगली क्वेरी में इसका इस्तेमाल करें:

INSERT INTO PurchasedItem(purchaseID, itemNo) VALUES (_the_value_above_, 111);
commit;

यदि आप चाहते हैं कि इसका उपयोग अन्तरक्रियाशीलता के बिना किया जाए, तो DO . का उपयोग करें returning purchaseID into _value . के साथ ब्लॉक करें

अपडेट करें :

या सीटीई, smth लाइक

WITH i AS (
  INSERT INTO Purchase(custName, orderedDate) 
  VALUES ('Lendl', '2016-09-28') 
  RETURNING purchaseID
)
insert into PurchasedItem
select i.purchaseID,'smth',3
from i


  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 में tcp_keepalives सेटिंग्स का उपयोग कैसे करें?

  3. PostgreSQL सुरक्षा सर्वोत्तम अभ्यास

  4. रेल 3, will_paginate, यादृच्छिक, दोहराए जाने वाले रिकॉर्ड, पोस्टग्रेज, सेटसीड विफलता

  5. कैसे pg_sleep_until() PostgreSQL में काम करता है