проверить дату в Создать таблицу - PullRequest
0 голосов
/ 20 января 2019

Я устанавливаю новую таблицу о заимствовании книг в 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 голосов
/ 20 января 2019

Я ожидаю синтаксис, подобный этому:

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. Но, возможно, это даже не уникально.

...