【问题标题】:How do I create an custom range type in PostgreSQL for example from 1 to 100?如何在 PostgreSQL 中创建自定义范围类型,例如从 1 到 100?
【发布时间】:2021-01-19 11:23:05
【问题描述】:

我有一列我想接受从 1 到 100 的值,这可能吗?我知道这是通过函数完成的,但我正在寻找上面提到的简单解决方案。

【问题讨论】:

    标签: postgresql range-types


    【解决方案1】:

    您可以使用检查约束:

    create table foo
    ( 
       some_value int not null check (some_value between 1 and 100)
    );
    

    或者,如果您需要在多个表中使用它,一个域可能会很有用

    create domain one_to_hundred
      as integer not null
      check (value between 1 and 100);
    
    create table foo
    ( 
       some_value one_to_hundred
    );
    

    【讨论】:

      【解决方案2】:

      对你的范围使用检查约束:

      CREATE TABLE foo (
        bar int4range NOT NULL,
        CONSTRAINT foo_bar_check CHECK (bar <@ '[0,100]'::int4range)
      )
      ;
      
      INSERT INTO foo(bar) VALUES('[20,30]');
      INSERT INTO foo(bar) VALUES('(30,200]'); -- fail
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-08
        • 1970-01-01
        相关资源
        最近更新 更多