PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Buat aturan atau pemicu Postgres untuk secara otomatis mengonversi kolom menjadi huruf kecil atau huruf besar saat disisipkan

Solusi ini telah diuji dan berfungsi di Postgres 9.1

Saya menggunakan pemicu untuk memecahkan masalah.

Berikut kode lengkapnya sehingga Anda dapat menempelkannya ke postgres dan mencobanya sendiri &penjelasan cara kerjanya di bawah

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'

Buat tabel demo kami:

CREATE TABLE foobar (
    foo text,
    bar int
);

Buat fungsi yang mengubah (foo) menjadi huruf kecil:

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;

Buat pemicu yang mengeksekusi kode ke huruf kecil foo sebelum menyisipkan:

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

Dan sekarang untuk menguji pekerjaan kami:

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

Hasilnya adalah satu-satunya baris di kolom foo sekarang disetel ke 'huruf kecil saya'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan nama dokumen di Alfresco dengan SQL?

  2. Bagaimana cara memutus koneksi TCP/IP dengan keepalive postgreSQL tanpa mengubah apa pun di register?

  3. Menghapus catatan dengan nomor yang berulang lebih dari 5

  4. Bagaimana cara menghapus urutan yang tidak digunakan?

  5. Strategi efektif untuk meninggalkan jejak audit/riwayat perubahan untuk aplikasi DB?