您将如何在 postgres 中创建规则以在插入时在 X 列上强制小写。EG 插入时:
INSERT INTO foobar (foo, bar) VALUES ('EXAMPLE', 2);
在坚持之前,我想EXAMPLE
被小写。example
您将如何在 postgres 中创建规则以在插入时在 X 列上强制小写。EG 插入时:
INSERT INTO foobar (foo, bar) VALUES ('EXAMPLE', 2);
在坚持之前,我想EXAMPLE
被小写。example
此解决方案已经过测试并在 Postgres 9.1 中运行
我使用触发器来解决问题。
这是完整的代码,因此您可以粘贴到 postgres 中并自己尝试并在下面解释它的工作原理
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;
创建一个触发器,在插入之前将代码执行为小写 foo:
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;
结果是 foo 列中的唯一行现在设置为“小写我”
更多信息后更新:尝试使用触发器代替在插入后强制小写字段。