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

PostgreSQL - बाधाओं को अक्षम करना

पिछली टिप्पणियों के अनुसार, यह एक समस्या होनी चाहिए। उस ने कहा, एक ऐसा आदेश है जो आप जो खोज रहे हैं वह हो सकता है - यह बाधाओं को स्थगित करने के लिए सेट करेगा, इसलिए उन्हें COMMIT पर चेक किया गया है, प्रत्येक डिलीट पर नहीं। यदि आप सभी पंक्तियों में से केवल एक बड़ा DELETE कर रहे हैं, तो इससे कोई फ़र्क नहीं पड़ेगा, लेकिन यदि आप इसे टुकड़ों में कर रहे हैं, तो यह होगा।

SET CONSTRAINTS ALL DEFERRED

उस मामले में आप जो खोज रहे हैं वह है। ध्यान दें कि बाधाओं को DEFERRABLE के रूप में चिह्नित किया जाना चाहिए इससे पहले कि उन्हें टाला जा सके। उदाहरण के लिए:

ALTER TABLE table_name
  ADD CONSTRAINT constraint_uk UNIQUE(column_1, column_2)
  DEFERRABLE INITIALLY IMMEDIATE;

तब किसी लेन-देन या कार्य में बाधा को इस प्रकार स्थगित किया जा सकता है:

CREATE OR REPLACE FUNCTION f() RETURNS void AS
$BODY$
BEGIN
  SET CONSTRAINTS ALL DEFERRED;

  -- Code that temporarily violates the constraint...
  -- UPDATE table_name ...
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;


  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. Generate_series () पर एक गिनती क्वेरी में शामिल हों और शून्य मानों को '0' के रूप में पुनः प्राप्त करें

  3. पीजी (0.17.1) स्थापित करते समय एक त्रुटि हुई, और बंडलर जारी नहीं रख सकता

  4. PostgreSQL प्रतिकृति स्लॉट का उपयोग करना

  5. IntegrityError:अद्वितीय बाधा और अशक्त उल्लंघनों के बीच अंतर करें