PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създайте правило или тригер на Postgres за автоматично преобразуване на колона в малки или главни букви при вмъкване

Това решение е тествано и работи в 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 вече е настроен на 'lowercase me'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Необходимо е динамично да изберете елемент от JSON масив от таблица postgresql

  2. Postgres комбинира множество индекси

  3. PostgreSQL връща функция с персонализиран тип данни

  4. Настройка на Django и PostgreSQL на две различни EC2 инстанции

  5. Как да подготвим изрази и параметри за свързване в Postgresql за C++