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

PostgreSQL 9.4 - Sử dụng toán tử tùy chỉnh trong ràng buộc EXCLUDE

Bạn đã chọn một thử thách thực sự. Sử dụng một chỉ mục duy nhất, đơn giản hơn, an toàn hơn và nhanh hơn nhiều.

CREATE TABLE foo (
    foo_id serial PRIMARY KEY,
    foo text NOT NULL,
    bar timestamptz,
    baz timestamptz
);
CREATE TABLE

CREATE UNIQUE INDEX foo_foo_bar_baz_idx ON foo 
(foo, coalesce(bar, 'infinity'), coalesce(baz, 'infinity'));
CREATE INDEX

INSERT INTO foo VALUES
(default, '', null, null),
(default, '', now(), null),
(default, '', null, now());
INSERT 0 3

INSERT INTO foo VALUES
(default, '', null, null);
ERROR:  duplicate key value violates unique constraint "foo_foo_bar_baz_idx"
DETAIL:  Key (foo, (COALESCE(bar, 'infinity'::timestamp with time zone)), (COALESCE(baz, 'infinity'::timestamp with time zone)))=(, infinity, infinity) already exists.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể tắt xử lý báo giá trong lệnh Postgres COPY với định dạng CSV không?

  2. vô hiệu hóa LƯU Ý trong đầu ra psql

  3. pip cài đặt không thành công với / usr / bin / clang:Không có tệp hoặc thư mục như vậy

  4. django.db.migrations.RenameModel và tên trình tự AutoField

  5. Tự động tạo id trong Spring MVC