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

PostgreSQL में यह कोड क्यों विफल रहता है और इसे कैसे ठीक किया जाए (काम के आसपास)? क्या यह SQL इंजन दोष को पोस्टग्रेज करता है?

...आपको बता रहा है कि आपका spb_getWord() SPB_WORD . में पहले से मौजूद मान उत्पन्न कर रहा है मेज़। आपको यह जांचने के लिए फ़ंक्शन को अपडेट करने की आवश्यकता है कि फ़ंक्शन से बाहर निकलने से पहले शब्द पहले से मौजूद है या नहीं - यदि ऐसा होता है, तो इसे तब तक फिर से जेनरेट करें जब तक कि यह एक हिट न हो।

मुझे लगता है कि आपका spb_runme() सदृश होना चाहिए:

create or replace function spb_runme() returns void as $$
DECLARE
  v_word VARCHAR(410);

begin
  perform setval('spb_wordnum_seq', 1, false);
  truncate table spb_word4obj, spb_word, spb_obj_word;

  for j in 0 .. 50000-1 loop

    if j % 100 = 0 then raise notice 'j = %', j; end if;

    for i in 0 .. 20 - 1 loop
      v_word := spb_getWord();
      INSERT INTO spb_word (word) VALUES (v_word);

      INSERT INTO spb_word4obj 
        (word, idx, doc_id, word_id)
        SELECT w.word, i, j, w.id
          FROM SPB_WORD w 
         WHERE w.word = v_word;

    end loop;

    INSERT INTO spb_obj_word (word_id, idx, doc_id) 
    SELECT w4o.word_id, w4o.idx, w4o.doc_id 
      FROM SPB_WORD4OBJ w4o 
     WHERE w40.doc_id = j;

  end loop;
end;

इसका उपयोग करने से आप word_id को बदल सकेंगे एनयूएलएल का समर्थन नहीं करने के लिए। विदेशी कुंजी के साथ काम करते समय, तालिका को विदेशी कुंजी संदर्भों को पहले पॉप्युलेट करें - माता-पिता से शुरू करें, और फिर उसके बच्चों से निपटें।

मैंने जो दूसरा बदलाव किया, वह था spb_getWord() . को स्टोर करना एक चर में (v_word ), क्योंकि फ़ंक्शन को कई बार कॉल करने का मतलब है कि आपको हर बार एक अलग मान मिलेगा।

आखिरी बात - मैंने डिलीट स्टेटमेंट हटा दिया। आपने टेबल को पहले ही छोटा कर दिया है, इसमें हटाने के लिए कुछ भी नहीं है। निश्चित रूप से j . के मान से संबंधित कुछ भी नहीं है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संभावित अपरिभाषित मानों को संभालने के दौरान SQL चयन क्वेरी बनाने के लिए सर्वोत्तम अभ्यास

  2. PostgreSQL में माध्यिका की गणना कैसे करें

  3. कैसे असिन () PostgreSQL में काम करता है

  4. अगले अनुक्रम संख्या के साथ एक ग्रेल बनाई गई फ़ाइल में एक सम्मिलित कैसे सेट करें?

  5. एक्सेल में फ़ॉर्मेटिंग दिनांक (YY:MM:DD:Time)