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

Các cột được tính toán / tính toán / ảo / dẫn xuất trong PostgreSQL

Lên đến Postgres 11 cột được tạo không được hỗ trợ - như được định nghĩa trong tiêu chuẩn SQL và được thực hiện bởi một số RDBMS bao gồm DB2, MySQL và Oracle. Cũng không phải "cột được tính toán" tương tự của SQL Server.

STORED các cột đã tạo được giới thiệu với Postgres 12 . Ví dụ nhỏ:

CREATE TABLE tbl (
  int1    int
, int2    int
, product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);

db <> fiddle here

VIRTUAL các cột được tạo có thể đi kèm với một trong các lần lặp tiếp theo. (Chưa có trong Postgres 14).

Có liên quan:

  • Ký hiệu thuộc tính cho lệnh gọi hàm gây ra lỗi

Cho đến lúc đó , bạn có thể mô phỏng VIRTUAL các cột được tạo bằng hàm sử dụng ký hiệu thuộc tính (tbl.col ) trông và hoạt động giống như một cột được tạo ảo . Đó là một chút kỳ lạ về cú pháp tồn tại trong Postgres vì ​​những lý do lịch sử và tình cờ phù hợp với trường hợp. Câu trả lời liên quan này có mã ví dụ :

  • Lưu trữ truy vấn chung dưới dạng cột?

Biểu thức (trông giống như một cột) không được bao gồm trong SELECT * FROM tbl , Tuy nhiên. Bạn luôn phải liệt kê nó một cách rõ ràng.

Cũng có thể được hỗ trợ với chỉ mục biểu thức phù hợp - miễn là hàm IMMUTABLE . Như:

CREATE FUNCTION col(tbl) ... AS ...  -- your computed expression here
CREATE INDEX ON tbl(col(tbl));

Giải pháp thay thế

Ngoài ra, bạn có thể triển khai chức năng tương tự với VIEW , tùy chọn kết hợp với các chỉ mục biểu thức. Sau đó, SELECT * có thể bao gồm cột đã tạo.

"Đã tồn tại" (STORED ) các cột được tính toán có thể được triển khai với trình kích hoạt theo cách giống hệt nhau về mặt chức năng.

Lượt xem cụ thể hóa là một khái niệm có liên quan chặt chẽ, được triển khai kể từ Postgres 9.3.
Trong các phiên bản trước, người ta có thể quản lý các MV theo cách thủ cô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. Hướng dẫn phân vùng dữ liệu trong PostgreSQL

  2. Cách trả lại id trên Phụ trang với Ibatis (với từ khóa QUAY LẠI)

  3. Chuyên sâu về nhà cung cấp dịch vụ đám mây:PostgreSQL trên Google Cloud Platform (GCP)

  4. PostgreSQL:Tại sao psql không thể kết nối với máy chủ?

  5. Heroku Postgres:Quá nhiều mối quan hệ. Tôi làm cách nào để loại bỏ các kết nối này?