【问题标题】:check date in Create table在创建表中检查日期
【发布时间】:2019-01-20 14:24:38
【问题描述】:

我正在设置一个关于在 PostgreSQL 中借书的新表。 这本书的借阅时间不得超过 56 天 但我没有得到正确的表格,因为我的检查日期不正确。 这是我的代码:

Create table loaning(
    Signature varchar PRIMARY KEY ,
    loanDate date  DEFAULT CURRENT_TIMESTAMP,
    returnDate date default CURRENT_TIMESTAMP + interval '28 day' 
        check((date loanDate + integer '56') < returnDate),

            );

【问题讨论】:

标签: sql postgresql postgresql-9.1


【解决方案1】:

我期待这样的语法:

create table loaning (
    Signature varchar PRIMARY KEY ,
    loanDate date DEFAULT CURRENT_DATE,
    returnDate date default CURRENT_DATE + interval '28 day' 
    check ((loanDate + interval '56 day') < returnDate),
);

您在returnDate 上得到了正确的区间表达式,但在check 约束中却没有。此外,没有理由将 date 转换为 date

我会推荐主键是一个序列列,所以我真的会推荐这样的东西:

create table loaning (
    loaningId serial primary key,
    signature varchar(255),
    loanDate date DEFAULT CURRENT_DATE,
    returnDate date default CURRENT_DATE + interval '28 day' 
    check ((loanDate + interval '56 day') < returnDate),
);

我不知道signature 是什么。但也许它甚至不是独一无二的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多