आप सही हैं कि आपको एक ट्रिगर की आवश्यकता है, क्योंकि कॉलम के लिए डिफ़ॉल्ट मान सेट करना आपके लिए काम नहीं करेगा - डिफ़ॉल्ट मान केवल null
के लिए काम करते हैं मूल्यों और रिक्त मूल्यों को रोकने में आपकी मदद नहीं करते हैं।
पोस्टग्रेज में ट्रिगर बनाने के कुछ चरण होते हैं:
चरण 1:एक ऐसा फ़ंक्शन बनाएं जो trigger
type टाइप करे :
CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
IF NEW.C1 IS NULL OR NEW.C1 = '' THEN
NEW.C1 := 'X';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql
चरण 2:एक ट्रिगर बनाएं जो पहले . सक्रिय हो सम्मिलित करें, जो आपको डालने से पहले मूल्यों को बदलने की अनुमति देता है, जो उपरोक्त फ़ंक्शन को आमंत्रित करता है:
CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()
और आपका काम हो गया।
उपरोक्त कोड को SQLFIdd पर निष्पादित करते हुए देखें कि यह सही तरीके से काम कर रहा है!
आप एक टिप्पणी में उल्लेख करते हैं कि मान 'X'
एक सबक्वेरी से पुनर्प्राप्त किया जाता है। अगर ऐसा है, तो संबंधित लाइन को कुछ इस तरह बदलें:
NEW.C1 := (select some_column from some_table where some_condition);