0
alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))

我想date_paiementdu在 datetransaction 后 30 天设置,但它不起作用

需要一些帮助!谢谢

4

3 回答 3

2

您已经定义了一个 CHECK 约束,但您似乎想要的是一个计算列

alter table dbo.transactions 
add tk_Date_paiementdu as (DateAdd(day, 30, [dateTransaction])
于 2013-02-19T00:00:53.880 回答
2

听起来您想要一个计算列而不是检查约束:

ALTER TABLE yourTable 
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction);

如果您希望该列不可为空或索引,那么您将需要使用PERSISTEDDateTransaction 也需要不可为空:

ALTER TABLE yourTable 
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction) PERSISTED NOT NULL;

为了进一步澄清,使用 PERSISTED 实际上将存储要在列中显示的数据,省略它将将该列保留为每次需要时计算的虚拟列。

于 2013-02-19T00:01:27.227 回答
0

数据库规范化的原则之一是不存储计算值。考虑到这一点,您可能可以通过以下方式实现您的目标:

where datediff(day, dateTransaction, Date_paiementdu) <= 30

如何完成此操作的详细信息是 RDBMS 特定的,您没有指定您的。

于 2013-02-19T00:40:00.327 回答