PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo quy tắc hoặc trình kích hoạt Postgres để tự động chuyển đổi một cột thành chữ thường hoặc chữ hoa khi chèn

Giải pháp này đã được thử nghiệm và đang hoạt động trong Postgres 9.1

Tôi đã sử dụng trình kích hoạt để giải quyết vấn đề.

Đây là mã đầy đủ để bạn có thể dán vào postgres và tự mình thử và giải thích về cách hoạt động bên dưới

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'

Tạo bảng demo của chúng tôi:

CREATE TABLE foobar (
    foo text,
    bar int
);

Tạo hàm chuyển đổi (foo) thành chữ thường:

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;

Tạo một trình kích hoạt thực thi mã thành chữ thường trước khi chèn:

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

Và bây giờ để kiểm tra công việc của chúng tôi:

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

Kết quả là hàng duy nhất trong cột foo hiện được đặt thành 'tôi viết thường'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn chỉ mục phù hợp cho truy vấn PostgreSQL

  2. lỗi đa tham số với datetime_select

  3. Mẫu bảng và các phương pháp khác để lấy các bộ số ngẫu nhiên

  4. Làm cách nào để bạn kết nối với Cơ sở dữ liệu Postgres mà không cần mật khẩu bằng pg-promise?

  5. Trích xuất khóa, giá trị từ các đối tượng json trong Postgres