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

प्राथमिक कुंजी उल्लंघन त्रुटि के बाद लेनदेन जारी रखना

आप लेन-देन में SAVEPOINTs का भी उपयोग कर सकते हैं।

पाइथोनिश स्यूडोकोड को अनुप्रयोग पक्ष से दर्शाया गया है:

database.execute("BEGIN")
foreach data_row in input_data_dictionary:
    database.execute("SAVEPOINT bulk_savepoint")
    try:
        database.execute("INSERT", table, data_row)
    except:
        database.execute("ROLLBACK TO SAVEPOINT bulk_savepoint")
        log_error(data_row)
        error_count = error_count + 1
    else:
        database.execute("RELEASE SAVEPOINT bulk_savepoint")

if error_count > error_threshold:
    database.execute("ROLLBACK")
else:
    database.execute("COMMIT")

संपादित करें:दस्तावेज़ में उदाहरण की थोड़ी भिन्नता के आधार पर psql में कार्रवाई में इसका एक वास्तविक उदाहरण यहां दिया गया है (">" द्वारा उपसर्ग SQL कथन):

> CREATE TABLE table1 (test_field INTEGER NOT NULL PRIMARY KEY);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "table1_pkey" for table "table1"
CREATE TABLE

> BEGIN;
BEGIN
> INSERT INTO table1 VALUES (1);
INSERT 0 1
> SAVEPOINT my_savepoint;
SAVEPOINT
> INSERT INTO table1 VALUES (1);
ERROR:  duplicate key value violates unique constraint "table1_pkey"
> ROLLBACK TO SAVEPOINT my_savepoint;
ROLLBACK
> INSERT INTO table1 VALUES (3);
INSERT 0 1
> COMMIT;
COMMIT
> SELECT * FROM table1;  
 test_field 
------------
          1
          3
(2 rows)

ध्यान दें कि मान 3 त्रुटि के बाद डाला गया था, लेकिन फिर भी उसी लेनदेन के अंदर!

SAVEPOINT के लिए दस्तावेज़ http://www.postgresql.org/docs/8.4/static/sql-savepoint.html पर है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL रुझान:सबसे लोकप्रिय क्लाउड प्रदाता, भाषाएँ, VACUUM, क्वेरी प्रबंधन रणनीतियाँ और एंटरप्राइज़ में परिनियोजन प्रकार

  2. पोस्टग्रेज ड्रॉप टेबल सिंटैक्स त्रुटि

  3. लेबल में अधिकतम वर्ण (तालिका नाम, कॉलम आदि)

  4. मैं एक कॉलम कैसे जोड़ सकता हूं जो पोस्टग्रेस्क्ल डेटाबेस में नल की अनुमति नहीं देता है?

  5. सरणी तत्वों के क्रम के साथ सरणी प्रकार के साथ PostgreSQL जॉइन, कैसे कार्यान्वित करें?