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

पोस्टग्रेज में सीरियल बढ़ाया जा रहा है, भले ही मैंने संघर्ष पर जोड़ा कुछ भी न करें

इसका कारण आपको अजीब लगता है कि आप इंसर्ट ऑपरेशन के हिस्से के रूप में काउंटर पर वेतन वृद्धि के बारे में सोच रहे हैं, और इसलिए "कुछ भी नहीं" का अर्थ "कुछ भी नहीं बढ़ाना" होना चाहिए। आप इसे चित्रित कर रहे हैं:

  1. बाधा के विरुद्ध सम्मिलित करने के लिए मानों की जाँच करें
  2. यदि डुप्लिकेट का पता चला है, तो निरस्त करें
  3. वृद्धि क्रम
  4. डेटा डालें

लेकिन वास्तव में, इंक्रीमेंट सम्मिलित करने का प्रयास करने से पहले . होना चाहिए . एक SERIAL Postgres में कॉलम को DEFAULT . के रूप में लागू किया गया है जो nextval() . को निष्पादित करता है एक बाध्य SEQUENCE . पर कार्य करें . इससे पहले कि DBMS डेटा के साथ कुछ भी कर सके, उसके पास स्तंभों का एक पूरा सेट होना चाहिए, इसलिए संचालन का क्रम इस प्रकार है:

  1. अनुक्रम को बढ़ाने सहित, डिफ़ॉल्ट मानों को हल करें
  2. बाधा के विरुद्ध सम्मिलित करने के लिए मानों की जाँच करें
  3. यदि डुप्लिकेट का पता चला है, तो निरस्त करें
  4. डेटा डालें

इसे सहज रूप से देखा जा सकता है यदि डुप्लिकेट कुंजी ऑटोइनक्रिकमेंट फ़ील्ड में ही है:

CREATE TABLE foo ( id SERIAL NOT NULL PRIMARY KEY, bar text );
-- Insert row 1
INSERT INTO foo ( bar ) VALUES ( 'test' );
-- Reset the sequence
SELECT setval(pg_get_serial_sequence('foo', 'id'), 0, true);
-- Attempt to insert row 1 again
INSERT INTO foo ( bar ) VALUES ( 'test 2' )
     ON CONFLICT (id) DO NOTHING;

स्पष्ट रूप से, यह नहीं जान सकता कि क्या अनुक्रम को बढ़ाए बिना कोई विरोध है, इसलिए "कुछ न करें" बाद आना होगा वह वेतन वृद्धि।



  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 'समूह द्वारा' क्वेरी में स्ट्रिंग फ़ील्ड के तारों को कैसे संयोजित करें?

  2. PL/pgSQL जाँच कर रहा है कि क्या कोई पंक्ति मौजूद है

  3. PostgreSQL 12 में प्रगति रिपोर्टिंग संवर्द्धन

  4. क्या किसी तालिका को डेटा से भरने से पहले, या डेटा के स्थान पर होने के बाद एक अनुक्रमणिका बनाना बेहतर है?

  5. PostgreSQL दिनांक और समय कार्य