在创建 table 中检查日期
check date in Create table
我正在设置一个关于在 PostgreSQL 中借书的新 table。
这本书不能借超过 56 天
但我没有得到正确的 table 因为我的支票日期不正确。
这是我的代码:
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),
);
我期待这样的语法:
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
是什么。但也许它甚至不是独一无二的。
我正在设置一个关于在 PostgreSQL 中借书的新 table。 这本书不能借超过 56 天 但我没有得到正确的 table 因为我的支票日期不正确。 这是我的代码:
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),
);
我期待这样的语法:
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
是什么。但也许它甚至不是独一无二的。