CREATE FUNCTION log_roll_test()
RETURNS trigger AS
$func$
BEGIN
EXECUTE format('INSERT INTO %I SELECT ($1).*'
, to_char(NEW.updt_ts, '"log"WW')) -- child table name
USING NEW;
RETURN NULL;
END
$func$ LANGUAGE plpgsql;
आप NEW
reference का संदर्भ नहीं दे सकते क्वेरी स्ट्रिंग के अंदर। NEW
फंक्शन बॉडी में दिखाई देता है, लेकिन EXECUTE
. के अंदर नहीं वातावरण। सबसे अच्छा समाधान USING
. में मानों को पास करना है खंड।
मैंने समतुल्य to_char(NEW.updt_ts, '"log"WW')
को भी प्रतिस्थापित किया तालिका के नाम के लिए। to_char()
यहाँ तेज़ और सरल है।