Postgres 9.0 या बाद के संस्करण में आपका कार्य इस तरह दिख सकता है:
CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
RETURNS trigger AS
$func$
DECLARE
v_partition_name text := quote_ident('dummyTest'); -- assign at declaration
BEGIN
IF NEW.datetime IS NOT NULL THEN
EXECUTE
'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
USING NEW.id, NEW.datetime;
END IF;
RETURN NULL; -- You sure about this?
END
$func$ LANGUAGE plpgsql;
के बारे में RETURN NULL :
- पोस्टग्रेएसक्यूएल के ट्रिगर से पहले में परिणाम को अनदेखा करने के लिए?
मैं मिश्रित केस पहचानकर्ताओं का उपयोग न करने की सलाह दूंगा। format( .. %I ..) . के साथ या quote_ident() , आपको "dummyTest" . नाम की एक टेबल मिलेगी , जिसे आपको इसके शेष अस्तित्व के लिए दोहरा उद्धरण देना होगा। संबंधित:
- क्या PostgreSQL कॉलम नाम केस-संवेदी हैं?
इसके बजाय लोअर केस का प्रयोग करें:
quote_ident('dummytest')
EXECUTE . के साथ डायनेमिक SQL का उपयोग करने का वास्तव में कोई मतलब नहीं है जब तक आपके पास एक स्थिर तालिका नाम है। लेकिन शायद यह सिर्फ सरलीकृत उदाहरण है?