PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz regułę lub wyzwalacz Postgres, aby automatycznie konwertować kolumnę na małe lub wielkie litery podczas wstawiania

To rozwiązanie zostało przetestowane i działa w Postgres 9.1

Do rozwiązania problemu użyłem wyzwalaczy.

Oto pełny kod, który możesz wkleić do postgresa i wypróbować samodzielnie, oraz wyjaśnienie, jak to działa poniżej

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'

Utwórz naszą tabelę demonstracyjną:

CREATE TABLE foobar (
    foo text,
    bar int
);

Utwórz funkcję, która konwertuje (foo) na małe litery:

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;

Utwórz wyzwalacz, który wykonuje kod do małych liter foo przed wstawieniem:

CREATE TRIGGER lowecase_foo_on_insert_trigger BEFORE INSERT OR UPDATE ON foobar
    FOR EACH ROW EXECUTE PROCEDURE lowecase_foo_on_insert();

A teraz przetestować naszą pracę:

INSERT INTO foobar (foo, bar) VALUES ('LOWERCASE ME', 1);
SELECT * FROM foobar;

W rezultacie jedyny wiersz w kolumnie foo jest teraz ustawiony na „małe litery”



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyświetl błąd w PostgreSQL

  2. Wybieranie rekordów między dwoma znacznikami czasu

  3. Jak mogę napisać to zapytanie postgres w Amazon redshift tak, aby było tak zoptymalizowane, jak w postgresie?

  4. Lista wszystkich kluczy obcych PostgreSQL

  5. Jak to_date() działa w PostgreSQL