जैसा कि @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 नहीं लौटाता
- स्तंभों के एक सेट पर पूर्ण बाधा नहीं