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 का उपयोग करने का वास्तव में कोई मतलब नहीं है जब तक आपके पास एक स्थिर तालिका नाम है। लेकिन शायद यह सिर्फ सरलीकृत उदाहरण है?