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

Hạn chế chồng chéo ngày postgres

Được rồi, tôi đã kết thúc việc này:

CREATE TABLE test (
    from_ts TIMESTAMPTZ,
    to_ts TIMESTAMPTZ,
    account_id INTEGER DEFAULT 1,
    product_id INTEGER DEFAULT 1,
    CHECK ( from_ts < to_ts ),
    CONSTRAINT overlapping_times EXCLUDE USING GIST (
        account_id WITH =,
        product_id WITH =,
        period(from_ts, CASE WHEN to_ts IS NULL THEN 'infinity' ELSE to_ts END) WITH &&
    )
);

Hoạt động hoàn hảo với vô cực, bằng chứng giao dịch.

Tôi vừa phải cài đặt tiện ích mở rộng tạm thời sẽ có sẵn trong postgres 9.2 và btree_gist có sẵn dưới dạng tiện ích mở rộng trong 9.1 CREATE EXTENSION btree_gist;

nb:nếu bạn không có dấu thời gian rỗng thì không cần sử dụng tiện ích mở rộng tạm thời, bạn có thể sử dụng phương thức hộp như được chỉ định trong câu hỏi của tôi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SERIAL tùy chỉnh / tự động tăng thêm cho mỗi nhóm giá trị

  2. Cách quản lý cơ sở dữ liệu PostgreSQL của bạn từ CLI ClusterControl

  3. Có cách nào để đặt thời gian hết hạn, sau đó mục nhập dữ liệu sẽ tự động bị xóa trong PostgreSQL không?

  4. Làm thế nào để truy vấn giá trị null trong trường json loại postgresql?

  5. GeoDjango trên Windows:Không thể tìm thấy thư viện GDAL / OSError:[WinError 126] Không tìm thấy mô-đun đã chỉ định