आप इसे आसानी से hstore
. के साथ लागू कर सकते हैं ऑपरेटर #=
:
सुनिश्चित करें कि अतिरिक्त मॉड्यूल ठीक से स्थापित है (एक बार प्रति डेटाबेस), एक स्कीमा में जो आपके search_path
. में शामिल है :
- pg_trgm एक्सटेंशन से % ऑपरेटर का उपयोग कैसे करें?
- पोस्टग्रेज डेटाबेस में एकाधिक स्कीमा पर hstore स्थापित करने का सबसे अच्छा तरीका?
ट्रिगर फ़ंक्शन:
CREATE OR REPLACE FUNCTION tbl_insup_bef()
RETURNS TRIGGER AS
$func$
DECLARE
_prefix CONSTANT text := 'some prepend data'; -- your prefix here
_prelen CONSTANT int := 17; -- length of above string (optional optimization)
_col text := quote_ident(TG_ARGV[0]);
_val text;
BEGIN
EXECUTE 'SELECT $1.' || _col
USING NEW
INTO _val;
IF left(_val, _prelen) = _prefix THEN
-- do nothing: prefix already there!
ELSE
NEW := NEW #= hstore(_col, _prefix || _val);
END IF;
RETURN NEW;
END
$func$ LANGUAGE plpgsql;
ट्रिगर (एक से अधिक तालिकाओं के लिए एक ही func का पुन:उपयोग करें):
CREATE TRIGGER insup_bef
BEFORE INSERT OR UPDATE ON tbl
FOR EACH ROW
EXECUTE PROCEDURE tbl_insup_bef('fieldName'); -- unquoted, case-sensitive column name
अधिक स्पष्टीकरण और सलाह के साथ निकटता से संबंधित:
- डायनेमिक कॉलम नाम वाले कॉलम का असाइनमेंट
- नई या पुरानी फ़ील्ड को केवल फ़ील्ड के नाम से कैसे एक्सेस करें?
- सामान्य ट्रिगर में अलग-अलग स्तंभों से मान प्राप्त करें