Sql 如何在postgres中执行此限制?

Sql 如何在postgres中执行此限制?,sql,postgresql,date,Sql,Postgresql,Date,我创建了这个表: create table sales( code varchar(3) saledate date, CONSTRAINT pk_codesale PRIMARY KEY (code) ); 日期将是每个月的第五天,但如果是星期一,则日期将是第二天,即第六天。您可以添加检查约束: check((extract(day from saledate) = 5 and -- 5. day of month

我创建了这个表:

create table sales(
    code              varchar(3)
    saledate          date,
    CONSTRAINT pk_codesale PRIMARY KEY (code)
);

日期将是每个月的第五天,但如果是星期一,则日期将是第二天,即第六天。

您可以添加检查约束:

check((extract(day from saledate) = 5 and -- 5. day of month
       extract(dow from saledate) <> 1)   -- but no monday
      or
      (extract(day from saledate) = 6 and -- 6. day of month
       extract(dow from saledate) = 2)    -- and tuesday
     )

可以添加检查约束:

check((extract(day from saledate) = 5 and -- 5. day of month
       extract(dow from saledate) <> 1)   -- but no monday
      or
      (extract(day from saledate) = 6 and -- 6. day of month
       extract(dow from saledate) = 2)    -- and tuesday
     )

你的问题是什么?我不明白你想做什么。我试着做限制,但什么也没做。你的问题是什么?我不明白你想做什么。我试图做限制,但什么都没有。谢谢你的回答,但有一种方式,所有这些都是默认完成的?@postgresqlx12:默认是什么意思?将此检查添加到创建表时,每当您尝试插入“错误”值时,PostgreSQL将返回错误消息。检查约束可防止输入错误数据。但它不会将数据更改为正确的日期。@GordonLinoff:现在我知道了,OP谈到了限制。谢谢你的回复,但是有一种方法可以让所有这些都默认完成?@postgresqlx12:默认是什么意思?将此检查添加到创建表时,每当您尝试插入“错误”值时,PostgreSQL将返回错误消息。检查约束可防止输入错误数据。但它不会将数据更改为正确的日期。@GordonLinoff:现在我知道了,OP谈到了限制。