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

पंक्ति प्रकार की जाँच करते समय IS NOT NULL गलत क्यों है?

जैसा कि @Pavel ने प्रदान किया है, चेक <row-type> IS NOT NULL आपकी अपेक्षा के अनुरूप काम नहीं करता है। यह TRUE returns लौटाता है अगर (और केवल अगर) हर एक कॉलम है NOT NULL

विशेष चर का परीक्षण करें FOUND इसके बजाय (जैसे @ माइक ने टिप्पणी की):

CREATE OR REPLACE FUNCTION registration(wr text)
  RETURNS integer AS
$rL$
    ...

    SELECT * INTO rowt FROM email WHERE email_email = eml;

    IF FOUND THEN
       RAISE EXCEPTION 'email address, %, already registered.', eml;
    END IF;

    ...
$rL$ LANGUAGE plpgsql;

या आप परीक्षण में अपनी अभिव्यक्ति को उलट सकते हैं।

IF rowt IS NULL THEN
   -- do nothing
ELSE 
   RAISE EXCEPTION 'email address, %, already registered.' , eml;
END IF;

कोई भी मौजूदा पंक्ति जो आपको मिलेगी उसमें कम से कम एक कॉलम है जो NOT NULL . है , इसलिए rowt IS NULL केवल TRUE लौटाता है अगर कुछ नहीं मिला।

अधिक विवरण के साथ संबंधित उत्तर:

  • रिकॉर्ड के लिए IS NOT NULL टेस्ट वैरिएबल सेट होने पर TRUE नहीं लौटाता
  • स्तंभों के एक सेट पर पूर्ण बाधा नहीं


  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 में SSL कैसे इनेबल करें

  2. Postgresql महीनों की जनरेट_सीरीज़

  3. Postgresql में एक चर का मान प्रिंट करना

  4. OmniDB के साथ PostgreSQL 12 के प्रदर्शन की निगरानी कैसे करें - भाग 1

  5. डेटाबेस नाम निर्दिष्ट किए बिना मैं PostgreSQL से कैसे जुड़ूं?