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

रिटर्निंग क्लॉज के साथ इंसर्ट इन व्यू रूल को पोस्टग्रेज करता है

आप INSTEAD OF INSERT . का उपयोग करके बहुत बेहतर हैं यहां ट्रिगर करें:

CREATE FUNCTION MyFuncName() RETURNS trigger AS $$
DECLARE
  id integer;
BEGIN
  INSERT INTO tableA (time) VALUES COALESCE(NEW.time, NOW()) RETURNING aPrimaryKey INTO id;
  INSERT INTO tableB (aPrimaryKey, someCol1) VALUES (id, NEW.someValue);
  RETURN NEW;
END; $$ LANGUAGE PLPGSQL;

CREATE TRIGGER MyView_on_insert INSTEAD OF INSERT ON MyView
  FOR EACH ROW EXECUTE PROCEDURE MyFuncName();

किसी अन्य तालिका में क्या डाला गया था यह देखने के लिए अनुक्रम के वर्तमान मान की जाँच करना खराब बुरा बुरा . है अभ्यास। जब आप यहां एक ही लेन-देन में हों, तब भी ऐसा न करें।

आप RETURNING . के मुद्दे को लेकर असमंजस में हैं जानकारी, क्योंकि जब मैं आपका प्रश्न पढ़ता हूं तो मैं भी भ्रमित होता हूं। किसी फ़ंक्शन के अंदर INTO . का उपयोग करें रिकॉर्ड मान रखने के लिए स्थानीय रूप से घोषित चरों को पॉप्युलेट करने के लिए क्लॉज जिसे आप बाद के बयानों में उपयोग कर सकते हैं। किसी फ़ंक्शन के बाहर, RETURNING का उपयोग करें क्लॉज जैसा कि आप अपने टॉप-मोस्ट कोड स्निपेट में करते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Npgsql - निर्दिष्ट विधि समर्थित नहीं है

  2. Django कनेक्शन निरस्त त्रुटि:[WinError 10053] एक स्थापित कनेक्शन आपके होस्ट मशीन में सॉफ़्टवेयर द्वारा निरस्त कर दिया गया था

  3. मैं एक पोस्टग्रेस संग्रहीत प्रक्रिया कैसे लिखूं जो कुछ भी वापस नहीं करता है?

  4. Postgresql में एक विस्तार परीक्षण बनाना

  5. ClusterControl 1.8.2 . के साथ PostgreSQL के लिए PgBouncer कनेक्शन पूलर का उपयोग करना