इस समाधान का परीक्षण किया जा चुका है और यह Postgres 9.1 में काम कर रहा है
मैंने समस्या को हल करने के लिए ट्रिगर्स का इस्तेमाल किया।
यहां पूरा कोड दिया गया है ताकि आप पोस्टग्रेज में पेस्ट कर सकें और इसे स्वयं आजमा सकें और यह बताएं कि यह नीचे कैसे काम करता है
DROP TABLE foobar;
CREATE TABLE foobar (
foo text,
bar int
);
CREATE OR REPLACE FUNCTION lowecase_foo_on_insert() RETURNS trigger AS $lowecase_foo_on_insert$
BEGIN
NEW.foo = LOWER(NEW.foo);
RETURN NEW;
END;
$lowecase_foo_on_insert$ LANGUAGE plpgsql;
CREATE TRIGGER lowecase_foo_on_insert_trigger BEFORE INSERT OR UPDATE ON foobar
FOR EACH ROW EXECUTE PROCEDURE lowecase_foo_on_insert();
INSERT INTO foobar (foo, bar) VALUES ('LOWERCASE ME', 1);
SELECT * FROM foobar; //result 'lowercase me'
हमारी डेमो टेबल बनाएं:
CREATE TABLE foobar (
foo text,
bar int
);
ऐसा फ़ंक्शन बनाएं जो (foo) को लोअरकेस में कनवर्ट करे:
CREATE OR REPLACE FUNCTION lowecase_foo_on_insert() RETURNS trigger AS $lowecase_foo_on_insert$
BEGIN
NEW.foo = LOWER(NEW.foo);
RETURN NEW;
END;
$lowecase_foo_on_insert$ LANGUAGE plpgsql;
एक ट्रिगर बनाएं जो डालने से पहले फू को लोअरकेस करने के लिए कोड निष्पादित करता है:
CREATE TRIGGER lowecase_foo_on_insert_trigger BEFORE INSERT OR UPDATE ON foobar
FOR EACH ROW EXECUTE PROCEDURE lowecase_foo_on_insert();
और अब हमारे काम का परीक्षण करने के लिए:
INSERT INTO foobar (foo, bar) VALUES ('LOWERCASE ME', 1);
SELECT * FROM foobar;
नतीजा यह है कि कॉलम फू में एकमात्र पंक्ति अब 'लोअरकेस मी' पर सेट है