CREATE TABLE customer (
date_of_birth date NOT NULL
);
尝试将其设置为在将值插入表格时,某人无法输入小于18岁的年龄。我如何使用date_of_birth属性执行此操作?
注意:我确实知道如何使用CHECK(年龄> 18),但我不知道如何将其与date_of_birth属性结合使用。
答案 0 :(得分:4)
根据current_date的值使用CHECK约束。由于current_date总是随着时间的推移而增加,所以今天通过此约束的任何值也将在明天通过。
CREATE TABLE customer (
date_of_birth date NOT NULL
check ( date_of_birth < (current_date - interval '18' year ) )
);
insert into customer values ('1996-09-29');
ERROR: new row for relation "customer" violates check constraint "customer_date_of_birth_check"
insert into customer values ('1996-09-28');
Query returned successfully: one row affected, 22 ms execution time.