sql >> データベース >  >> RDS >> PostgreSQL

一意の日時範囲のPostgres制約

    個別のtimestampを保持できます 列を使用し、引き続き除外制約を使用します 式について:

    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
    );
    

    tsrangeの作成 tsrange(starts_at, ends_at)として明示的な境界のない値 自動的にデフォルトの境界を想定します:下限を含み、上限を除外します-'[)' 、通常は最適です。

    SQLフィドル。

    関連:

    • PostgreSQLでEXCLUDEを使用して隣接/重複するエントリを防止する

    既存のテーブルに制約を追加する

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

    構文の詳細は、CREATE TABLEの場合と同じです。 。




    1. PostgreSQL:ブール列のインデックスを作成します

    2. dbms_outputバッファを増やす方法は?

    3. JDBCを使用する場合、MySQLでのOracleのREF CURSORに相当するものは何ですか?

    4. MySQL Workbench