在创建表中检查日期

时间:2019-01-20 14:24:38

标签: sql postgresql postgresql-9.1

我正在设置有关在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),

            );

1 个答案:

答案 0 :(得分:0)

我期望这样的语法:

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是什么。但也许它甚至不是唯一的。