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

Ràng buộc postgres cho phạm vi ngày giờ duy nhất

Bạn có thể giữ timestamp riêng biệt của mình và vẫn sử dụng ràng buộc loại trừ trên một biểu thức:

CREATE TABLE tbl (
   tbl_id    serial PRIMARY KEY
 , starts_at timestamp
 , ends_at   timestamp
 , EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&) -- no overlapping
);

Tạo tsrange giá trị không có giới hạn rõ ràng là tsrange(starts_at, ends_at) tự động giả định các giới hạn mặc định:bao gồm dưới và không bao gồm trên - '[)' , thường là tốt nhất.

SQL Fiddle.

Có liên quan:

  • Ngăn các mục nhập liền kề / chồng chéo với EXCLUDE trong PostgreSQL

Thêm ràng buộc vào bảng hiện có

ALTER TABLE tbl ADD CONSTRAINT tbl_no_overlapping_time_ranges
EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&)

Chi tiết cú pháp giống như đối với CREATE TABLE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql - không thể thả cơ sở dữ liệu do một số kết nối tự động với DB

  2. Làm thế nào để hiển thị hàm, thủ tục, kích hoạt mã nguồn trong postgresql?

  3. Cách Round () hoạt động trong PostgreSQL

  4. Chuyển đổi một ngày Julian thành một ngày trong PostgreSQL

  5. Làm thế nào để có được Thời gian tạo cơ sở dữ liệu trong PostgreSQL 9.0?