CREATE FUNCTION foo ()
RETURNS trigger AS
$func$
BEGIN
IF TG_OP = 'INSERT' THEN
EXECUTE format('INSERT INTO %s SELECT $1.*'
, 'samples_' || left(NEW.md5, 2);
USING NEW;
END IF;
RETURN NULL;
END
$func$ LANGUAGE plpgsql;
और EXECUTE
कोष्ठकों की आवश्यकता नहीं है।
और आप जानते हैं कि पहचानकर्ताओं को छोटे अक्षरों में तब तक मोड़ा जाता है जब तक कि जहां आवश्यक हो, उद्धृत नहीं किया जाता है (%I
%s
. के बजाय format()
में )।
अधिक विवरण:
- इन्सर्ट के साथ ट्रिगर फ़ंक्शन में गतिशील तालिका का नाम
- PostgreSQL 8.2 में TG_TABLE_NAME का गतिशील रूप से उपयोग कैसे करें?